2010-06-17 6 views

Répondre

6

Si vous avez la zone de texte, vous devez gérer l'événement onkeypress

<input type='text' onkeypress='keypresshandler(event)' /> 

Vous pouvez utiliser la fonction suivante pour limiter les utilisateurs

function keypresshandler(event) 
    { 
     var charCode = event.keyCode; 
     //Non-numeric character range 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    } 
+0

Nous le faisons comme ça :) – Znarkus

+0

J'ai essayé cette approche, et j'ai trouvé que vous deviez utiliser onkeypress = 'return keypresshandler (event)' pour que cela fonctionne. – Bill

14

Vous pouvez le faire via le javascript (donc si javascript est désactivé, vous ne pourrez pas le limiter)

<input type="text" onkeyup="this.value = this.value.replace(/[^a-z]/, '')" /> 

Je le limite à seulement des caractères z. Commander regular expressions pour voir ce que vous pouvez faire

+7

Rappelez-vous que ce code s'exécute uniquement du côté client. Le script du serveur doit être préparé pour gérer ** n'importe quelle entrée ** et rejeter les caractères non valides. –

+1

Cela nécessite un indicateur global sur l'expression régulière. C'est parce que l'on peut maintenir une touche enfoncée et la faire commettre de nombreux événements clés vers le bas (et ajouter plusieurs nombres) avant la sortie, à quel point seulement 1 événement clé va ... signifiant qu'un seul des nombreux caractères non souhaités serait être supprimé car sans un drapeau global, il ne remplace que 1 par appel. –

1
function isNumberKey1(evt) 
{ 
     var charCode = (evt.which) ? evt.which : event.keyCode; 
     if (char!=8(charCode < 65 || charCode > 106)) 
     return false; 

     return true; 
} 
+0

Veuillez ajouter une description à votre code. Pourquoi votre solution est meilleure que d'autres solutions postées? – Artemix

2

Bien qu'il soit encore possible, avec HTML5 il n'y a pas de réel besoin d'utiliser une solution à base de JavaScript pour cette exigence.

<input type="text" name="text" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"> limitera les caractères autorisés en fonction du modèle RegExp (dans ce cas: adresses e-mail valides).

L'attribut title sera utilisé comme avertissement/notification lorsque l'utilisateur tente de soumettre les données ne correspondant pas à la configuration requise.

<form action="/add_country.php"> 
    Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> 
    <input type="submit"> 
</form> 

Pour plus d'informations, voir le document . Cependant, tous les navigateurs ne le supportent pas aussi bien (comme Safari).

0

La réponse de Ben Rowe est en effet la manière de l'aborder. Cependant, le caractère apparaîtra dans la zone de texte avant d'être supprimé. Vous pouvez empêcher que l'utilisation oninput au lieu de onkeyup:

<input type="text" oninput="this.value = this.value.replace(/[^a-z]/, '')" /> 
Questions connexes