2009-03-18 7 views
6

Quelqu'un peut-il me montrer un exemple de restriction de l'entrée de l'utilisateur (sur l'étiquette d'entrée) en Javascript?restreindre l'entrée de l'utilisateur en utilisant javascript

Quelque chose que lorsque nous avons fixé l'entrée (type = « text ») d'accepter uniquement numérique, il ignore toute autre entrée, sauf pour numérique ...

Je pense qu'il est à portée de main pour l'entrée numérique (par exemple zip, carte de crédit, l'argent, la valeur, le score, la date etc ...), et si vous pouvez me montrer comment s'il vous plaît pour créer l'entrée avec le modèle, quelque chose comme:

 
Please Input Date: 
|-----------------| 
| / / | 
|-----------------| 

PS: Je entendu WebForms 2.0 supportera cela dans le futur ... (Navigateur conforme à l'Acid 3?)

input type = "date"
input type = "temps"
input type = "nombre"
type d'entrée = "argent"

Mais ce ne fut que des nouvelles de l'avenir: D

Répondre

8

Cela pourrait vous aider.

http://www.w3schools.com/jsref/event_onkeydown.asp

<html> 
<body> 

<script type="text/javascript"> 
function noNumbers(e) 
{ 
var keynum; 
var keychar; 
var numcheck; 

if(window.event) // IE 
{ 
keynum = e.keyCode; 
} 
else if(e.which) // Netscape/Firefox/Opera 
{ 
keynum = e.which; 
} 
keychar = String.fromCharCode(keynum); 
numcheck = /\d/; 
return !numcheck.test(keychar); 
} 
</script> 

<form> 
<input type="text" onkeydown="return noNumbers(event)" /> 
</form> 

</body> 
</html> 
+0

Oui, cela fonctionne pour le filtrage de caractères simple ... mais qu'en est-il des formats complets comme une date ("mm/jj/aa"). Vous ne pouvez pas simplement retourner false si ce n'est pas le bon format, sinon vous ne serez jamais en mesure d'entrer les premiers chiffres. –

+1

Non, c'est vrai, mais cela donne une idée sur la façon dont cela pourrait être fait. Fx. vous ne pourrez taper 0 et 1 que dans le premier caractère de la chaîne de date. Si l'utilisateur tape un nombre au-dessus, le numéro ne sera pas enregistré. Mais oui, ces codes spécifiques ne font pas toute la magie. –

+0

ouais, je viens de commenter pour plus de clarté;) –

3

Vous pouvez utiliser des bibliothèques spécifiques comme jQuery Validate (ou tout ce que vous propose votre framework JS) sur le formulaire. L'autre solution consiste à contrôler la valeur sur les événements de flou keyUp & mais il peut devenir assez compliqué de décider quoi faire avec une entrée mal formulée (en particulier lorsque le format est un peu complexe - c'est-à-dire pas seulement des caractères indésirables). Donc, dans l'ensemble, je recommande le contrôle côté client sur soumettre.

+0

J'ai déjà la méthode de validation de soumission de formulaire: D – Dels

5

Cette question a déjà une réponse acceptée, mais je pense qu'il ya une meilleure solution à cela. Vous n'avez pas à l'implémenter vous-même sur le clavier, etc. Il existe des bibliothèques pour cela. Ils appellent la technique que vous décrivez "masques d'entrée". Découvrez this jQuery plugin il fait exactement ce que vous voulez.

+1

Ce plugin jQuery est génial. – Matthew

+0

J'adore ce plug-in, mais le problème reste avec plusieurs appareils Android sur les navigateurs natifs et chrome où il y a trop de problèmes. Pour la plupart, quand il s'agit d'Androids, je finis généralement par enlever complètement le masque. –

Questions connexes