Я хочу, чтобы форма ввода PIN-кода, в которой каждый символ вводился в отдельный вход html.keyup change обработчик события фокус не работает для быстрого ввода
Я пытаюсь захватить события keyup в javascript, чтобы изменить фокус на следующий элемент ввода, избавив пользователя от необходимости самостоятельно его менять щелчком мыши или вкладкой.
Он работает, если пользователь не набирает очень быстро. Например, если пользователь набирает символы «1» и «2» очень быстро, я считаю, что первый вход теперь правильно имеет символ «1», а второй вход по-прежнему пуст, и фокус переместился на третий вход.
Почему?
Вот код:
$(document).ready(function() {
$('.pinchar').keyup(function (e) {
\t \t \t \t
if (
(e.which == 8) //backspace
|| (e.which == 46) // del
|| (e.which == 9) // tab
|| (e.which == 13) // return
|| (e.which == 27) // esc
|| (e.which == 37) // arrow
|| (e.which == 38) // arrow
|| (e.which == 39) // arrow
|| (e.which == 40) // arrow
|| (e.which == 27) // esc
|| (e.which == 20) // CAPS LOCK
|| (e.which == 17) // Ctrl
|| (e.which == 18) // Alt
|| (e.which == 16)) { //shift
return false;
} else {
$(this).parent().next().find('.pinchar').focus();
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="enterPINTable">
<tr>
<td>
<input name="txtPIN1" id="txtPIN1" class="pinchar" size="1">
</td>
<td>
<input name="txtPIN2" id="txtPIN2" class="pinchar" size="1">
</td>
<td>
<input name="txtPIN3" id="txtPIN3" class="pinchar" size="1">
</td>
<td>
<input name="txtPIN4" id="txtPIN4" class="pinchar" size="1">
</td>
</tr>
</table>
вы не имеете закрытие '});' это странно, но у меня работает – Grisza
Спасибо, Grisza, Sorry..closing}); не хватало ... Но только опечатка выше. Я не вижу, где будет итерация и как она может помочь. – kev