2010-04-09 5 views

Répondre

0
$('#input-id').bind('keypress', function(e) { 
    return !((e.which < 48 || e.which > 57) && e.which != 8 && e.which != 0); 
}) 
5

Bien sûr, vous placez un gestionnaire d'événements sur les événements de clavier et les annulez pour les non-chiffres lorsque la zone de texte correspondante est active. Voir element.onkeydown event.

Vous pouvez bien sûr le faire dans Javascript de vanille mais comme beaucoup de choses, c'est plus facile avec une bibliothèque (comme jQuery).

Par exemple, en supposant:

<input id="one" type="text"> 
<input id="two" type="text"> 

essayer:

document.getElementById("one").onkeydown = numbers_only; 

function numbers_only(evt) { 
    return evt.keyCode >= 48 && evt.keyCode <= 57; 
} 

Le premier ne devrait permettre chiffres.

+0

vous voulez dire la validation avec jquery? – Lina

+1

Mais que se passe-t-il lorsque l'utilisateur fait glisser du texte dans la zone de texte. – rahul

+2

@rahul: les événements de collage et de dépôt sont problématiques en JS pur. Voir http://www.quirksmode.org/dom/events/cutcopypaste.html – cletus

1

Si vous n'avez pas envie de l'écrire à partir de zéro, vous pouvez utiliser le plugin jQuery suivant: http://www.itgroup.com.ph/alphanumeric/ puis écrire:

$('#id').numeric(); 

Et son été posée ici: how do i block or restrict special characters from input fields with jquery?

SUPPLEMENTAIRE: Et assurez-vous de valider sur le serveur malgré tout!

+0

merci, cela semble logique :) – Lina

+2

+1 pour trouver son dup. – jweyrich

+1

Cela échoue lorsque l'utilisateur fait glisser du texte dans la zone de texte. – rahul

1

le code exact que je cherchais est:

$('#id').bind('keypress', function (e) { 

     return (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) ? false : true; 

    }); 
0

Si vous voulez attraper ce sur un événement soumettre, vous pouvez utiliser regex pour faire en cas présenter hanlder.

Mais si vous voulez le faire lorsque l'interaction de l'utilisateur avec la zone de texte est en cours, alors vous devrez manipuler keydown et discussion événements. En câblant uniquement les événements de touche ou de touche, l'utilisateur ne peut pas entrer d'autres caractères. Il peut également faire glisser du texte dans la zone de texte. L'événement de focus empêchera cela de se produire.

Questions connexes