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

HTML Discussion :

Interdire la saisie de chiffres dans mon input text


Sujet :

HTML

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut Interdire la saisie de chiffres dans mon input text
    Bonjour,

    voilà je suis novice en matière de site web.
    je dois controler la saisie d'un formulaire.
    je dois notamment interdire la saisie de lettre dans un de mes champs.
    j'ai vu qu'il y avait des expressions régulières mais je n'y arrive pas quelqu'un peut il me donner un coup de pouce.

    voici mon code:
    Code : 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 check() {
    expr = /\d/;
    if ( !document.formSeuil.getElementById("seuilPt").value.match(expr) ) {
    alert("Vous devez saisir des chiffres");
    document.formSeuil.getElementById("seuilPt").focus();
    return false;
    }
    return true;
    }
     
    ...
        <FORM NAME="formSeuil" METHOD="POST" action="..."/ onSubmit="return check();">
            <TABLE>
              <tr><td><br>Le nombre de points à dépasser:</td><td><input type="text" name="seuilPt" onBlur="return check();"></td></tr>
            </TABLE>
            <input type=button name="format" value="Génerer">
    ...

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Je dirais que c'est une question souvent posée et la réponse se trouve sur le forum et dans la FAQ

  3. #3
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    salut
    moi j'ai fait une petite fonction javascript sur le onkeypress de l'objet text
    je voulais bloquer soit les lettre soit les chiffres...etc

    cé pas shick mais ca fonctionne bien

    Code : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    <script type="text/javascript" language="javascript">
     
     /*Fonction qui vérifie que le caractère inscrit est alphabétique
      @param evenement est l'événement fournis par le keypress
      @param type est le type de caractère qu'on souhaite bloquer: 0 pour bloquer chiffres, 1 pour bloquer lettres
      @return true si le caractère est correct
     */
     function verifieChar(evenement,type){
      var charCode; 
      charCode = evenement.keyCode; //Code ascii
     
      switch(type){
       case 0:
        //Lettres en majuscules,minuscule et trait d'union
        if((charCode >= 65 && charCode <= 90)
         ||(charCode >= 97 && charCode <= 122)
         ||(charCode == 45)
         ||(charCode == 32)){
     
         return true ;
        }
        //si c'est un chiffre ou autre on n'affiche rien
        else{
         return false ;
        }
       break;
       case 1:
        //chiffres et trait d'union
        if((charCode >= 48 && charCode <= 57)
         ||(charCode == 45)
         ||(charCode == 32)){
     
         return true;
        }
        //si c'est autre chose on n'affiche rien
        else{
         return false ;
        }
       break;
       case 2:
        //Lettres et chiffres seulement
        if((charCode >= 65 && charCode <= 90)
         ||(charCode >= 97 && charCode <= 122)
         ||(charCode >= 48 && charCode <= 57)
         ||(charCode == 32)){
     
         return true;
        }
        else{
         return false;
        }
       break;
      }//fermeture du switch
     }//fermeture de la fonction
    </script>

    L'appel se fait comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="text" id="0" name="txtNom" size="29" value="" onKeyPress="return verifieChar(event,0);">
     
    <input size="10" type="text" id="2" name="txtCivique" value"" onKeyPress="return verifieChar(this,event,1);">
    bonne jounée

  4. #4
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    je dirai que j'ai l'air d'un con là
    toutes mes excuses, j'ai pourtant chercher ...

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    Petit (big) UP => j'ai utilisé la fonction JS suivante :
    Code : 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
    function chiffres(event) {
    // Compatibilité IE / Firefox
    if(!event&&window.event) {
    event=window.event;
    }
    // IE
    if(event.keyCode < 46 || event.keyCode > 57) {
    event.returnValue = false;
    event.cancelBubble = true;
    }
    // DOM
    if(event.which < 46 || event.which > 57) {
    event.preventDefault();
    event.stopPropagation();
    }
    }
    Cela fonctionne super bien, j'ai mis 46 au lieu de 48 pour bénéficier de la touche "Suppr".
    OR, je voudrais pouvoir utiliser la touche 8, qui est le backspace.
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    event.keyCode < 46 || event.keyCode > 57 || event.keyCode = 8
    mais ça ne marche pas.

    Une idée ?

  6. #6
    Membre éclairé Avatar de c_s_s
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 619
    Points : 747
    Points
    747
    Par défaut
    Tu as essayé avec event.keyCode == 8 ?

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    Merci pour ta réponse qui m'a permis de remarquer que j'avais tout faux ... voici le bout de code permettant d'interdire toutes les touches sauf :
    - 0-9
    - shift (pour ceux qui ont pas de pavé numérique)
    - backspace
    - delete
    - les arrows (fleches)

    Voici mon code si ça intéresse quelqu'un

    Code : 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
    function chiffres(event) {
    // Compatibilité IE / Firefox
    if(!event&&window.event) {
    event=window.event;
    }
    // IE
    if((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 37 || event.keyCode > 40) && event.keyCode != 46 && event.keyCode != 8 && event.keyCode != 16) {
    event.returnValue = false;
    event.cancelBubble = true;
    }
    // DOM
    if((event.which < 48 || event.which > 57) && (event.keyCode < 37 || event.keyCode > 40) && event.keyCode != 46 && event.keyCode != 8 && event.keyCode != 16) {
    event.preventDefault();
    event.stopPropagation();
    }
    }

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut La petite bette
    Bonjour,

    J'utilise se code dont j'avais instamment besoin.

    Il reste toutefois une faille.
    Le copié collé à la souris.

    Avec pour défaut que si on doit placer une longue série de chiffre comme un serial key, ca va faire crise l'utilisateur de ne pas pouvoir le copier coller.
    Mais personnellement je m'en tape.

    Est il possible de revoir ce code pour intégré le blocage du coller de la sourie ?
    ps : j'ai quand meme besoin du bouton droit pour les autres champs.

    Bonne journée

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bon, si ça peut aider quelqu'un qui tomberait par là, j'ai repris le code de lacfab, et j'ai ajouté la possibilité du ctrl sous Firefox, la tabulation et une autre fonction qui n'autoriserait que les lettres :

    Code : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    function chiffres(event) {
    	// Compatibilité IE / Firefox
    	if(!event && window.event) {
    		event=window.event;
    	}
     
    	var code = event.keyCode; 
    	var which = event.which;
     
    	// IE
    	if ((code < 48 || code > 57) && code != 46 && code != 8 && code != 9 && code != 16 && code != 13) {
    		event.returnValue = false;
    		event.cancelBubble = true;
    	}
     
    	// DOM (dont Firefox)
    	if ((which < 48 || which > 57) && (code < 37 || code > 40) && code != 46 && code != 8 && code != 9 && code != 16 && code != 13 || event.ctrlKey) {
    		event.preventDefault();
    		event.stopPropagation();
    	}
    }
     
    function lettres(event) {
    	// Compatibilité IE / Firefox
    	if(!event&&window.event) {
    		event=window.event;
    	}
     
    	var code = event.keyCode; 
    	var which = event.which;
    	// IE
    	//Si le keycode ne correspond pas à [A-Z] ou à [a-z] ou aux autres autorisés...
    	if  (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 8 || code == 9 || code == 13 || code == 16 || code == 46)) {
    		event.returnValue = false;
    		event.cancelBubble = true;
    	}
     
    	// DOM (dont Firefox)
    	if  (!((which >= 65 && which <= 90) || (which >= 97 && which <= 122) || (code >= 37 && code <= 40) || code == 8 || code == 9 || code == 13 || code == 16 || code == 46 || event.ctrlKey)) {
    		event.preventDefault();
    		event.stopPropagation();
    	}
    }
    À noter que :
    - IE ne reconnaît que keyCode et pas which et Firefox ne reconnaît pas tous les keyCode (Pour les autres navigateurs, à vous de voir)
    - Il faut ajouter onKeyPress="return chiffres(event);" (ou lettres(event)) dans l'input concerné
    - Touches autorisées :
    Chiffres
    0-9 (keyCode ou which 48 à 57)
    Lettres
    A-Z et a-z (keyCode ou which 65 à 90 et 97 à 122)

    Ctrl+qqch (event.ctrlKey , hélas, si on laisse ça, l'utilisateur a possibilité de coller des lettres/chiffres, et IE se moque de cet event, le Ctrl+qqch étant autorisé tout le temps)
    backspace (keyCode 8)
    tabulation (keyCode 9)
    entrée (keycode 13)
    shift (keyCode 16)
    flèches (keycode 37 à 40) [Pour IE, ces keyCode correspondent à %, &, ' et ( ]
    suppr (keycode 46)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Salut karibouxe,

    J'ai besoin de faire des calculs avec ce que je sort de mes input, il me faut donc intégrer les décimaux, quel est le code pour le ".", enfin les deux codes, s'il te plait? j'ai essayer 110 mais cela ne marche pas...

    Merci

    Alors après plusieurs test, le code marche très bien sous IE mais pas de point pour firefox. Quelqu'un a t-il une solution "universelle"?

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

Discussions similaires

  1. [FAQ] Les formulaires (partie 2) : Comment n'autoriser que la saisie de chiffres dans un champ texte ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 4
    Dernier message: 18/11/2013, 21h34
  2. [JavaScript] [FAQ][MAJ] Comment n'autoriser que la saisie de chiffres dans un champ texte?
    Par Bisûnûrs dans le forum Contribuez
    Réponses: 8
    Dernier message: 10/01/2012, 18h08
  3. Retour à la ligne dans mon input text?
    Par maestro982 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 02/08/2010, 14h57
  4. Comment limiter la saisie à deux décimales dans mon widget Text ?
    Par Nicolas Dansel dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/09/2009, 16h13
  5. Contenu d'un champ tronqué dans mon input box
    Par Marmot dans le forum ASP
    Réponses: 2
    Dernier message: 27/10/2004, 13h30

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