2010-03-24 2 views
0

Sans utiliser jQuery, quel est le meilleur moyen de limiter l'entrée de texte d'une zone de texte aux chiffres, aux lettres minuscules et à un ensemble donné de symboles (par exemple - et _)? Si l'utilisateur entre une lettre majuscule, je voudrais qu'il soit automatiquement converti en une lettre minuscule, et si l'utilisateur entre un symbole pas dans l'ensemble donné, je voudrais être capable de montrer instantanément une erreur de validation (montrer un élément à côté ou au-dessous de la zone de texte).Quel est le meilleur moyen de limiter la saisie de texte aux chiffres, aux lettres minuscules et à certains symboles?

Quelle est la manière la plus simple de faire cela sans l'aide de jQuery?

+0

pourquoi ne pas utiliser jQuery? Voulez-vous également renoncer à d'autres cadres de JS I.e. mootolls etc.? –

+0

Je veux en effet renoncer à d'autres frameworks JavaScript; Je cherche simplement une solution "pure" en ce moment. –

Répondre

1

Attachez ce qui suit à l'événement onkeyup des éléments.

function onkeyup() 
{ 
    var el = document.getElementById("id"); // or however you want to get it 

    el.value = el.value.toLowerCase(); // covert to lower case 

    if (el.value.match(/[^-\d\w]/)) // check for illegal characters 
    { 
     // show validation error 
     ... 
     // remove invalid characters 
     el.value = el.value.replace(/[^-\d\w]/g, ""); 
    } 
    else 
    { 
     // hide validation error 
    } 
} 

Le regex correspond à un caractère qui n'est pas un chiffre, une lettre, un trait d'union ou un trait de soulignement.

+0

Si vous allez faire cela avec plusieurs entrées, ce serait une bonne idée de créer un plugin http://docs.jquery.com/Plugins/Authoring – caligoanimus

+0

Il existe déjà un plugin pour cela. C'est ce qu'on appelle la validation Jquery. Mais le PO ne veut pas utiliser un cadre. – Joel

+0

Cette solution n'empêche pas les utilisateurs d'entrer des caractères illégaux, elle ne les alerte que lorsque l'entrée est invalide. Existe-t-il un moyen de supprimer le caractère illégal afin qu'il ne puisse pas être saisi dans la zone de texte? Aussi, cela fonctionnera-t-il avec des choses comme coller sur le terrain? –

Questions connexes