Dans ma page HTML, il y a un champ de saisie. Je veux seulement la touche numérique et la flèche gauche/droite sur le clavier peut être entré. J'ai essayé le JavaScript suivant, mais j'ai rencontré un problème.problème keyCode - Impossible d'empêcher la saisie du caractère%
<input onkeypress="return allowNumberOnly(event)" />
function allowNumberOnly(event) {
event = event || window.event;
var charCode = (event.which) ? event.which : event.keyCode;
//keyCode 48-57 represent the number 0-9
//keyCode 37,39 represent the Left and Right arrow
//keyCode 46 represent the Delete key
//keyCode 8 represent the Backspace key
return charCode == 37 || charCode == 39 || charCode == 46 || charCode == 8
|| (charCode >= 48 && charCode <= 57);
}
Après avoir testé ce code, j'ai trouvé un problème que le code d'activation de la flèche gauche et caractère spécial% sont à la fois 37. Je ne peux pas empêcher l'utilisateur d'entrer le caractère% permettant quant à lui la flèche gauche. Je n'ai aucune idée de pourquoi cela arriverait. J'ai toujours pensé que le keyCode devrait être unique pour chaque touche du clavier. J'ai pensé utiliser onkeyup au lieu de onkeypress. Mais l'onkeyup permettrait à l'utilisateur d'entrer le caractère invalide en premier, puis de le retirer du texte d'entrée. Ce comportement n'est pas ce que je veux. Toute suggestion serait appréciée. J'ai débogué le code dans FireFox et trouvé la différence suivante.
1. Si entrez%, event.which == 37 et event.keyCode == 0
2. Si entrer Flèche gauche, event.which == 0 et event.keyCode == 37
Le problème semble être résolu en utilisant cette différence. Je vais continuer à essayer dans IE et Chrome.
Fiddle: http://jsfiddle.net/gW6k3/ – JJJ