IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] [Filtre sur champ] Chiffres et tabulation


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut [DOM] [Filtre sur champ] Chiffres et tabulation
    Bonjour tout le monde.

    Je cherche à résoudre un petit problème qui rend mon site peu "ergonomique".

    Voilà, alors sur le site, j'ai un formulaire contenant des input type="text" qui e peuvent contenir que des valeurs numérique. Pour ce faire, j'ai récupéré la fonction chiffres se trouvant dans la FAQ.

    Ayant des nombres décimaux à saisir, et que seuls les chiffres étaient pris en compte, j'ai donc modifié la fonction comme ceci:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    function chiffres(event) {
    	// Compatibilité IE / Firefox
     
    	if(!event&&window.event) {
    		event=window.event;
    	}
    	// IE
    	if(event.keyCode!=8 &&  event.keyCode!=44 &&(event.keyCode < 48 || event.keyCode > 57)) {
    		event.returnValue = false;
    		event.cancelBubble = true;
    	}
    	// DOM
    	alert('Valeur de key: '+event.which);
    	if( event.which!=8 && event.which!=44 && event.which!=9 && (event.which < 48 || event.which > 57)) {
    		event.preventDefault();
    		event.stopPropagation();
    	}
    }

    Maintenant j'ai donc la possibilité de saisir des nombres à virgule.

    Par contre, le formulaire étant de taille relativement importante (+/- 30 champs), et afin de permettre à l'utilisateur de naviguer plus rapidement, je voulais permettre à ce dernier de naviguer avec la touche "TAB".

    Sur IE, no problemo, il passe d'un champ à l'autre sans même poser de question, mais sous FFX, il bloque aussi la touche "TAB".

    J'ai donc placer la valeur 9 avec dans la condition, car elle est la valeur correspondant à la touche "TAB" (code ASCII).
    Mais ça ne marche pas.

    J'ai essayer d'afficher le "event.which" pour connaitre le code correspondant à la touche "TAB", mais il affiche 0.

    Quelqu'un à une idée? J'ai surement oublier quelque chose, mais étant tout nouveau dans le monde javascriptien, je me permet de poser des questions un peu plus idiotes afin d'apprendre.

    Merci pour votre collaboration ^^.

    p.s.: j'ai regarder sur le net, mais eux disent qu'il faut hardcoder, et la solution ne me plait absolument pas de hardcoder quelque chose la dedans, car le javascript est censé rendre les choses dynamique, si je ahrdcode, je perds donc cet avantage (oups, je m'égard)

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    étrange , tu appel ta méthode , sur le onkeypress ou le onkeyup ?

  3. #3
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Sur le onkeypress.

    Je sais bien que c'est bizarre, c'est pour cela que je me suis permis de poser la question

    Voilà un champ de mon formulaire qui utilise cet event et la fonction:

    Code asp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" size="12" title="" name="Art__Pa_Brut" value="<% =oArtEntry.DDValue("Art.Pa_Brut") %>" onChange="onChangePaBrut()" onkeypress="chiffres(event)" />

    Petite question au passage, le onChange se lance bien lorsque l'on quitte le champ, c'est bien ça? Parce que chez moi il agit comme ça, et me demandais si c'était normal.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    quand on quitte un champs : onblur

    pour le reste je ne comprend pas pourquoi ça ne marche pas :-/

  5. #5
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Je viens d'essayer de rajouter le "0" à la place du 9 dans la condition du DOM, et cela fonctionne, mais ce n'est pas logique dans la table ASCII partout sur le net on renseigne que "TAB"==9 et pas 0

    j'obtiens donc ceci:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function chiffres(event) {
    	// Compatibilité IE / Firefox
     
    	if(!event&&window.event) {
    		event=window.event;
    	}
    	// IE
    	if(event.keyCode!=8 &&  event.keyCode!=44 &&(event.keyCode < 48 || event.keyCode > 57)) {
    		event.returnValue = false;
    		event.cancelBubble = true;
    	}
    	// DOM
    	if( event.which!=8 && event.which!=44 && event.which!=0 && (event.which < 48 || event.which > 57)) {
    		event.preventDefault();
    		event.stopPropagation();
    	}
    }

  6. #6
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Une dernière petite question.

    Je viens de me rendre compte que le langage que j'utilise pour le "code behind" ne veut pas de "." comme caractère de séparation pour les nombres décimaux mais une ",".

    Mais il me faut les "." pour les calculs en javascript.

    Je pensais donc forcer le "." lors de la saisie dans le formulaire, mais je n'ai aucune idée de comment remplacer un caractère par un autre dans mon script.

    Quelqu'un pourrait-il me dire comment procéder? J'ai beau regarder un peu partout, mais je ne comprend pas grand chose avec les keyCode, which, qui sont utilisé soit par FFX soit par IE, alors que moi, quand j'utilise FFX, il passe dans les deux if de mon script (bizarre aussi ça, car plein de site disent que FFx ne connait pas keyCode).

    Quelqu'un saurait me mettre sur la voie??


    EDIT:
    Avant qu'on ne vienne encore me dire que je n'ai pas cherché, j'ai essayer de comprendre ceci, mais étant surement trop c**, e n'y arrive pas.
    Quelqu'un aurait-il donc l'amabilité de m'expliquer comment il me faudrait adapter ce code pour mon script déjà existant? ou alors, est ce que je dois tout remplacer ?

    EDIT2:
    Bon, je viens de rajouter ceci mon code
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else if (event.keyCode==44){
       //event.returnValue = false;
       event.keyCode = 46;
    }

    Ce qui me donne maintenant ceci:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    function chiffres(event) {
    	// Compatibilité IE / Firefox
    	//alert('valeur de la touche:'+event.which);
    	if(!event&&window.event) {
    		event=window.event;
    	}
    	// IE
    	if(event.keyCode!=8 &&  event.keyCode!=46 && event.keyCode!=44 &&(event.keyCode < 48 || event.keyCode > 57)) {
    		event.returnValue = false;
    		event.cancelBubble = true;
    	}
    	else if (event.keyCode==44){
    		//event.returnValue = false;
    		event.keyCode = 46;
    	}
    	// DOM
    	if( event.which!=8 && event.which!=46 && event.which!=44 && event.which!=0 && (event.which < 48 || event.which > 57)) {
    		event.preventDefault();
    		event.stopPropagation();
    	}
    	else if (event.which==44){
    		event.which=46;
    	}
    }

    Mais pour la partie FFX ça ne marche pas...

    tout idée est la bien venue... ^^

  7. #7
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tu n'aurais pas une erreur javascript ? je crois que sous ff tu ne peux pas assigner wich , a vérifier

  8. #8
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Oui effectivement j'ai une erreur.

    J'aimerais bien savoir comment je peux faire afin de "contourner" celle-ci. Donc en quelque sorte, redéfinir le code du caractère qu'il va retourner, donc remplacer la "," par un "."

    Faisable facilement ou non ?? Enfin peu importe que ce soit facile ou non à réaliser, il faut que je le fasse, afin de ne pas recevoir d'erreur d'insertion dans ma BD.

    Des idées?

  9. #9
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    j'avais déja essayé en vain :'( je chercherais demain sinon cherche tu coté de l'assignation ou du remplacement de ta string au moment ou la valeur de l'input change

  10. #10
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Sinon, j'ai opter pour la solution de facilité, mais c'est pas top.

    je laisse le user saisir un point ou une virgule, et au moment où j'ai besoin de la valeur, je remplace simplement les , par des .
    Ce n'est pas a solution la plus propre, mais la plus simple à mettre en place.

    Dès lors, je pense qu'il me faudra trouver quelque chose de plus propre à ce niveau là, car c'est tout de même mon projet de fin d'étude...

  11. #11
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    la solution que j'avais trouvé :
    - si ie , tu renvois un autre keycode
    - si FF ou autre, tu utilises une regexp pour remplacer les , par des points sur le onkeyup

  12. #12
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    D'accord, je veux bien tenter de le faire, mais le problème est que je suis tout nouveau dans le monde de javascript, et que le regexp, tout ce que j'en sais, c'est qu'il représente une "expression régulière".
    Mais je n'ai strictement aucune idée de comment l'utilisé

    Pourrais-je abuser de ton temps et te demander de me faire un exemple tout simple et me l'expliquer?

    si tu n'en as point l'envie ou le temps, je comprendrais.

    Merci en tout cas pour la solution proposée, je m'y pencherais une fois que j'aurais fini la correction des quelques bugs restant.

  13. #13
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tu aurais appliqué le principe dans ta signature tu aurais vite trouvé


    http://javascript.developpez.com/faq...script#replace

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtre sur champ
    Par guenfood dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/08/2009, 15h10
  2. Problème Filtre sur champ Date
    Par Batoche dans le forum kettle/PDI
    Réponses: 2
    Dernier message: 23/02/2009, 17h35
  3. Réponses: 1
    Dernier message: 28/02/2008, 21h40
  4. Filtre sur champ null ou vide
    Par pierrot67 dans le forum Débuter
    Réponses: 4
    Dernier message: 15/09/2007, 13h10
  5. Filtre sur champ persistant
    Par codial dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/12/2006, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo