web-dev-qa-db-fra.com

Désactiver certains caractères du champ de saisie

J'ai trouvé des instructions similaires, mais aucune aide, toutes sont destinées à des caractères spéciaux ou à des chiffres.

J'ai besoin de rendre le type d'utilisateur seulement 1, 2, 3, 4, 5, N, O, A, B, C. tous les autres personnages doivent être restreints.

Est-ce que je peux faire ma propre sélection de caractères restreints/autorisés pour les entrées?

  • Pas très familier avec javascript.
14
Nutic

Essaye ça

$(function(){
  $('#txt').keypress(function(e){
    if(e.which == 97 || e.which == 98 || e.which == 99 || e.which == 110 || e.which == 111 || e.which == 65 || e.which == 66 || e.which == 67 || e.which == 78 || e.which == 79 || e.which == 49 || e.which == 50 || e.which == 51 || e.which == 52 || e.which == 53){
    } else {
      return false;
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='txt' value='' onpaste="return false" />

Mise à jour du 9 mars 2018

$(function(){
  $('#txt').keypress(function(e){
    // allowed char: 1 , 2 , 3, 4, 5, N, O, A, B, C
    let allow_char = [97,98,99,110,111,65,66,67,78,79,49,50,51,52,53];
    if(allow_char.indexOf(e.which) !== -1 ){
      //do something
    }
    else{
      return false;
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='txt' value='' onpaste="return false" />

12
Pragnesh Chauhan

avec JQuery,

$("input").keypress( function(e) {
    var chr = String.fromCharCode(e.which);
    if ("12345NOABC".indexOf(chr) < 0)
        return false;
});

sans JQuery

document.getElementById("foo").onkeypress = function(e) {
    var chr = String.fromCharCode(e.which);
    if ("12345NOABC".indexOf(chr) < 0)
        return false;
};

Pour les doublures, tirées des commentaires de @mplungjan et @ matthew-lock 

document.querySelector("#foo").onkeypress = function(e) {
    return "12345NOABC".indexOf(String.fromCharCode(e.which)) >= 0;
};
27
allenhwkim

Il n'est pas clair à 100% si vous souhaitez restreindre le formulaire soumis avec des valeurs non valides ou empêcher littéralement l'utilisateur de saisir ces valeurs. Les autres réponses traitent de ce dernier point et je pense que est ce que vous vouliez dire, mais il y aura des gens qui arrivent ici (comme moi) qui veulent simplement empêcher la soumission du formulaire.

Dans quel cas:

Utilisez l'attribut pattern sur l'élément input:

<input pattern="[REGEX HERE]">

https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation

https://regex101.com/

2
andydavies

Si vous voulez désactiver quelques caractères du champ de saisie, vous pouvez faire quelque chose comme ça:

<input type="text" onkeydown="return (event.keyCode!=86);"/>

86 est le code pour V. Vérifiez le code pour les autres clés à partir du lien suivant.

https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

1
Abdul Malik