le MEMO du WEB développeur
••• JQuery •••  Liste des Mémos, astuces et bonnes pratiques

Ajouter un masque de saisie dans un champs input text

Testez le masque de saisie :

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


}) 
publié le 13/06/2013 par Memo Web
AstuceExpression régulière
Commentaire :
Bonjour, vous n'avez pas emp�ch� le copier coller, mais juste le v ..
par inconnu, le 15/04/2015
Effectivement, pour résoudre le problème rapidement j'ai finalement rajouté une fonction javascript qui permet d'annuler le copier/coller dans le champs (action sur l'élément input d'identifiant "no_paste")
L'idéal serait de traiter l'intégralité de la chaîne collée sur l'événement onpaste (JQuery) en enlevant tous les caractères indésirables.
par tarabusk, le 12/07/2013
Malheureusement, cela ne gère pas le copier / coller...
par inconnu, le 11/07/2013
Commenter le Mémo :

Not(expr) Element d'exclusion en Jquery
Apparition d'un élément en fondu avec JQuery sur le survol de souris
Sélecteurs RegExp et JQuery
Afficher une image différente selon la date de l'année en javascript
Comment faire des opérations avec les attributs de style exprimés en px
$("#calendar").fullCalendar is not a function
Modifier l'attribut src d'une image avec JQuery
Problème(ou pas):JQuery ferme automatiquement les balises HTML
Faire clignoter un élément avec JQuery
Atteindre une ancre avec JQuery
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos