справка по работе с jQuery при попытке автофокусировки на следующем поле ввода после keyUp, будучи максимально универсальной - PullRequest
2 голосов
/ 01 ноября 2010

HTML

<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>

текущий jQuery

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

Проблема:

Я пытаюсь установить автофокус на следующее поле ввода после нажатия клавиши в каждомполе ввода.До сих пор я находил решение, которое продолжает цикл до тех пор, пока не дойдет до последнего, выбранного, или если я использую фильтр: first, он всегда возвращается к первому, найденному на странице.

Я не думаю, что смогу использовать next (), так как это не следующий узел в наборе.Всегда будут метки, разделяющие каждое поле ввода.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 01 ноября 2010

Вы можете использовать :first, но .next() вернет только очень следующих братьев и сестер , если соответствует селектору , Вместо этого вы хотите .nextAll() с селектором, например так:

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

Вы можете проверить это здесь .

0 голосов
/ 01 ноября 2010

Далее могут быть селекторы также.

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