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();
    }
 });


}) 
Testez le masque de saisie :
0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.