Il est possible de rajouter un masque de saisie lors de la saisie d’un champs input text d’un formulaire HTML qui empêche l’utilisateur de saisir certains caractères.
Ce masque codé en javascript, se déclanche sur l’événement keyup du champs texte du formulaire.
L’input text doit porter une classe spécifique, ici la classe only_alpha_num qui nous permettra de déclancher l’évenement keyup.
Lorsque l’utilisateur tape un caractère, on analyse ce caractère dans l’événement keyup que l’on fait passer par le filtre d’une expression régulière. Dans notre cas on vérifie que le caractère tapé est un caractère alphanumérique, si la condition est vérifiée, on applique la fonction supprimer_dernier_caractere qui va supprimer du champs text le dernier caractère saisi.
Il devient impossible alors pour l’utilisateur de saisir un autre caractère qu’un caractère alphanumérique.
code HTML :
<form> <imput type='text' name='cache-texte' class='only_alpha_num' id="no_paste"/> </form>
Code javascript :
function supprimer_dernier_caractere(elm) { var val = $(elm).val(); var cursorPos = elm.selectionStart; $(elm).val( val.substr(0,cursorPos-1) + // before cursor - 1 val.substr(cursorPos,val.length) // after cursor ) elm.selectionStart = cursorPos-1; // replace the cursor at the right place elm.selectionEnd = cursorPos-1; } $(document).ready( function () { // Supprime le dernier caractère s'il n'est pas alphanumérique sur evt keyup $('body').delegate('input.only_alpha_num','keyup',function(){ if(!$(this).val().match(/^[0-9a-z]*$/i)) // a-z et 0-9 uniquement supprimer_dernier_caractere(this); }); // Annulation du "coller" dans l'input texte auquel on a affecté l'identifiant "no_paste" document.getElementById('no_paste').addEventListener('keydown', function (foo){ if (foo.keyCode == 86) { // alert('Vous avez copié du texte'); foo.preventDefault(); } }); })
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!