2011-11-04 3 views
2

J'utilise ce code pour arrêter l'utilisateur d'entrer des valeurs numériques dans les champs de saisie:touche Tab ne fonctionne pas

$('input[type=text]').keydown(function(event) { 
    // Allow only backspace and delete 
    if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190) { 
     // let it happen, don't do anything 
    } 
    else { 
     // Ensure that it is a number and stop the keypress 
     if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { 
      event.preventDefault(); 
     } 
    } 
}); 

Cependant, cela arrête la touche de tabulation de se concentrer sur la prochaine zone de texte. Si je add this code à l'événement keydown, la touche de tabulation fonctionne, mais l'utilisateur ne peut pas entrer aucune valeur dans la zone de texte et la touche de tabulation se concentre uniquement sur la case immédiatement suivante. Après cela, il ne va pas à la case suivante, lorsque la touche Tab est à nouveau enfoncée.

var code = event.keyCode || event.which; 
if (code == 9) { 
    alert ("Tab key pressed"); 
} 
return false; 

Voici le code à jsFiddle: http://jsfiddle.net/N7BWF/1/

Répondre

3
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) 

Cette ligne de code comprend 9 (onglet). Vous devez ajouter && event.keyCode != 9 à la condition if si vous voulez activer tab.

+0

Merci. Ça a marché. – input

+0

J'ai également fixé la logique à votre violon. Voir le bloc d'événement à ce violon: http://jsfiddle.net/N7BWF/3/ –

0

Placez votre extrait de code avec 9 au début de la fonction, et faire le code exécuté dans le bloc si return true;

http://jsfiddle.net/52LUt/

var code = event.keyCode || event.which; 
    if (code == 9) { 
     return true; 
    } 
Questions connexes