Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS] Restriction dans input text

que des chiffres (ou presque)

Sujet résolu
    3 août 2006 à 22:00:23

    Bonsoir,

    Je désirerais, dans un input de type "text", n'acceptéer via JavaScript, que l'entré des touches:

    - 0,1,2,3,4,5,6,7,8,9;
    - touche ENTRE;
    - touche retour en arriere;
    - touche suppr.

    ( je veux que le visiteur ne puisse préciser que de chiffres et qu'il ne soit pas enbeter s'il s'est trompé )

    pourriez-vous m'aider ^^ ?

    merci :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 août 2006 à 22:22:21

      Entre <HEAD> et </HEAD> :
      <script language="Javascript">

      /* Pour faire une vérification sans autoriser le point ("."), suivez les instructions qui sont écrites en commentaire */

      function verif_nombre(champ)
      {
      var chiffres = new RegExp("[0-9\.]"); /* Modifier pour : var chiffres = new RegExp("[0-9]"); */
      var verif;
      var points = 0; /* Supprimer cette ligne */

      for(x = 0; x < champ.value.length; x++)
      {
      verif = chiffres.test(champ.value.charAt(x));
      if(champ.value.charAt(x) == "."){points++;} /* Supprimer cette ligne */
      if(points > 1){verif = false; points = 1;} /* Supprimer cette ligne */
      if(verif == false){champ.value = champ.value.substr(0,x) + champ.value.substr(x+1,champ.value.length-x+1); x--;}
      }

      }
      </script>

      Entre <BODY> et </BODY> :

      <form>
      <input type="text" name="champ_de_texte" onkeyup="verif_nombre(this);">
      </form>
      • Partager sur Facebook
      • Partager sur Twitter
        3 août 2006 à 23:02:10

        Heu c'est peut être plus simple de faire:

        function verif_nombre(champ)
        {
                var chiffres = new RegExp("[^0-9\.]");
                if( chiffres.test(champ.value)  )
                        champ.value     =    champ.value.replace(chiffres,"");
        }
        • Partager sur Facebook
        • Partager sur Twitter
          4 août 2006 à 8:50:57

          Bon j'ai essayer vos propositions mais je viens de trouvé un truc "mieux":



          <input type="text" name="distance" size="3" class="form" maxlength="4" onKeypress="if(event.keyCode < 45 || event.keyCode > 57) event.returnValue = false; if(event.which < 45 || event.which > 57) return false;" /> km


          Ce code bloque DIRECT tout ce qui n'est pas chiffre :)
          ( touches de code: 45 <=> chiffres <=> 57 )

          Or je voudrais aussi qu'il accept la touche "suppr", la touche "retour arriere" et la touche "entré" de codes respectifs 8, 0 et 13.

          Je n'ai pas réussit a rajouter ces trois restrictions o_O
          Pouvez-vous m'y aider? :)

          Peut-on, pour une question de légerté, placer un script hors des <input> ?


          merci d'avance :)

          (n'hésitez pas à poser des questions si vous n'avez pas compris quelque chose)
          • Partager sur Facebook
          • Partager sur Twitter
            5 août 2006 à 9:44:24

            petit UP ^^

            Lisez mon avant-dernier message et vous comprendrez ou je bloque. Merci d'avance. :)
            • Partager sur Facebook
            • Partager sur Twitter
              5 août 2006 à 10:58:58

              Heu déjà code 45 à 57, ça inclut "/" "." et "-".
              Table Ascii
              sinon, je préfère faire une fonction:

              function seulementNombre(event)
              {
                      var keyCode;
                      if( document.all)
                              keyCode =        event.keyCode;
                      else
                              keyCode =        event.which;
                     
                      if( keyCode     >    28  &&        (keyCode        <       45     ||   keyCode    >   57))
                              return event.returnValue        =       false;
                      return true;
              }

              Que j'utilise ensuite dans l'évenement keypress:

              <input type="text" name="distance" size="3" class="form" maxlength="4" onKeypress="return seulementNombre(event);" /> km


              Et puis, là, j'ai laissé passer tout les caractères donc le code est inférieur à 28. On peut faire plus précis en autorisant les caractères un à un.
              • Partager sur Facebook
              • Partager sur Twitter

              [JS] Restriction dans input text

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown