2010-11-01 24 views
2

le code HTMLaide sur jQuery travail en essayant de mise au point automatique sur le champ d'entrée suivante après keyUp, être aussi générique que possible

<input class="fr pinPass" type="password" name="pin1" id="pin1_1" tabindex="100"/> 
<label>Enter the third number</label> 

<br class="cb"/> 

<input class="fr pinPass" type="password" name="pin1" id="pin1_2" tabindex="101"/> 
<label>Enter the fourth number</label>          
<br class="cb"/> 

<input class="fr pinPass" type="password" name="pin1" id="pin1_3" tabindex="102"/> 
<label>Enter the second number</label> 

le courant jQuery

$(".pinPass").focus(function() { 
    $(this).keyup(function(){ 
     $("input").siblings('.pinPass').filter(':first').focus();    
    }); 
}); 

le problème:

I Je suis en train d'essayer de mettre le focus automatique sur le prochain champ de saisie après keyUp dans chaque champ de saisie. Jusqu'à présent, j'ai trouvé une solution qui continue en boucle jusqu'à la dernière sélection, ou si j'utilise le: premier filtre, elle retourne toujours à la première qu'elle trouve sur la page.

Je ne pense pas pouvoir utiliser next(), car ce n'est pas le prochain nœud de l'ensemble. Il y aura toujours des étiquettes séparant chaque champ de saisie.

Toute aide serait grandement appréciée.

+0

avez-vous même essayé ensuite? il devrait y avoir n'importe quel problème tant que c'est l'entrée qui a le sélecteur spécifié .pinPass – Breezer

+0

corrigez-moi si im incorrect mais j'ai pensé que les éléments avec le même nom devraient être ajoutés comme un aray comme ceci 'name =" pin1 [] "' –

Répondre

3

Vous pouvez utiliser :first, mais .next() ne retournera le très frères et sœurs à venir si elle correspond à le sélecteur. Au lieu de cela que vous voulez .nextAll() avec un sélecteur, comme celui-ci:

$(".pinPass").keyup(function(){ 
    $(this).nextAll('.pinPass:first').focus(); 
}); 

You can test it out here.

+0

La magie. Je viens juste de lire à propos de nextAll il y a quelques minutes! Je savais que next() ne fonctionnerait pas, et avait des problèmes de boucle avec nextAll - mais une combinaison de nextAll et du premier filtre fonctionne. À votre santé! – Kevin

0

Suivant peut également avoir des sélecteurs.

$(this).next('input');