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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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
    Par défaut
    étrange , tu appel ta méthode , sur le onkeypress ou le onkeyup ?

  3. #3
    Membre éclairé 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
    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
    Par défaut
    quand on quitte un champs : onblur

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

  5. #5
    Membre éclairé 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
    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 éclairé 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
    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... ^^

+ 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