それぞれの文字を別々のhtml入力に入力するPIN入力フォームが必要です。keyupイベントハンドラがフォーカスを変更してすぐに入力できない
javascriptでkeyupイベントをキャプチャしようとしているため、次の入力要素にフォーカスを変更して、マウスクリックやタブでユーザー自身で変更する必要がなくなりました。
ユーザーが本当にすばやく入力しない限り機能しています。例えば、ユーザーが本当にすばやく文字 '1'と '2'を入力すると、最初の入力に文字 '1'が正しく表示され、2番目の入力はまだ空で、フォーカスは3番目に移動しています入力。
なぜですか?
$(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