我不知道如何解决这个问题:
用户可以在输入框中开始输入一些数字。在输入数字后,光标将移动到下一个输入框。但是,如果用户输入太快,也就是说,在两个数字之间没有按键松开的时间,它将无法正常工作。
因此,如果用户输入“12”而不是“1”和“2”,则第一个输入框应该有值“1”,第二个输入框应该有值“2”,并且焦点应该设置为第三个输入框。
用户可以在输入框中开始输入一些数字。在输入数字后,光标将移动到下一个输入框。但是,如果用户输入太快,也就是说,在两个数字之间没有按键松开的时间,它将无法正常工作。
因此,如果用户输入“12”而不是“1”和“2”,则第一个输入框应该有值“1”,第二个输入框应该有值“2”,并且焦点应该设置为第三个输入框。
<form>
<input type="password" maxlength="1" name="pin1" autofocus />
<input type="password" maxlength="1" name="pin2" />
<input type="password" maxlength="1" name="pin3" />
<input type="password" maxlength="1" name="pin4" />
</form>
$('form input').on('keydown', function(event) {
if (event.shiftKey || event.which <= 47 || event.which >= 58)
return false;
}).on('keyup', function (event) {
if (event.currentTarget.value.length >= 1)
$(event.currentTarget).next('input').focus();
});
keypress
事件,而不是keydown
。根据键盘类型,keydown
可能会返回意外行为,因此不应用于“字符”检查。 - A. Wolff