Javascript keyup事件处理程序更改焦点不适用于快速键入
我想要一个PIN输入表单,其中每个字符都被输入到单独的html输入中 我试图在javascript中捕获keyup事件,这样我就可以将焦点更改为下一个输入元素,从而避免用户自己需要通过鼠标单击或选项卡来更改它 除非用户很快地输入,否则它是有效的。例如,如果用户快速键入字符“1”和“2”,我发现第一个输入现在正确地包含字符“1”,而第二个输入仍然为空,焦点转移到第三个输入 为什么? 代码如下: $document.readyfunction{ $'.pinchar'.keyup函数e{ 如果 e、 which==8//backspace ||e.which==46//del ||e.which==9//tab ||e.which==13//return ||e.which==27//esc ||e.which==37//箭头 ||e.which==38//箭头 ||e.which==39//箭头 ||e.哪个==40//箭头 ||e.which==27//esc ||e.which==20//CAPS LOCK ||e.which==17//Ctrl ||e.which==18//Alt ||e.which==16{//shift 返回false; }否则{ $this.parent.next.find'.pinchar'.focus; } }; }; 当您按下一个键,然后在释放它之前,按下另一个键时,keyup将失败。事件顺序依次为按键1、按键2、按键1、按键2。但是,由于字符是在keydown和keypress之后生成的,因此在这种情况下,在第一个keyup事件之前,输入中已经有两个字符 请尝试输入事件: 任何更改都会立即触发 但要正确处理其他关键点,还需要捕获箭头和退格关键点的keydown事件 我建议使用以下代码: $document.readyfunction{ 变量$inputs=$.enterPINTable.pinchar; 函数stepinp、dir、clr{ 如果clr$inp.val; var buffer=$inp.val;//获取多余字符 //在下一个框中排列字符,以确保最多1个字符 var curr=$inputs.indexinp; 对于var i=curr,j=0;jJavascript keyup事件处理程序更改焦点不适用于快速键入,javascript,jquery,keyup,Javascript,Jquery,Keyup,我想要一个PIN输入表单,其中每个字符都被输入到单独的html输入中 我试图在javascript中捕获keyup事件,这样我就可以将焦点更改为下一个输入元素,从而避免用户自己需要通过鼠标单击或选项卡来更改它 除非用户很快地输入,否则它是有效的。例如,如果用户快速键入字符“1”和“2”,我发现第一个输入现在正确地包含字符“1”,而第二个输入仍然为空,焦点转移到第三个输入 为什么? 代码如下: $document.readyfunction{ $'.pinchar'.keyup函数e{ 如果 e
您没有关闭};这很奇怪,但对我来说,谢谢,格里萨,对不起..结束};他失踪了。。。但上面只有一个打字错误。我不知道迭代在哪里,或者它可能如何帮助。如果我们考虑跨浏览器支持,KEYPress是不受欢迎的,不工作在所有浏览器中,如果不考虑OK,这也是有效的。也许Grisza认为keypress是dep
尽管重新设计了,但这个解决方案仍然有效。非常好。效果很好,我喜欢处理箭头和退格。谢谢
$('.pinchar').on('input', function (e) {
// ... etc.