Javascript 输入值onkeydown返回不正确的值(少一个)

Javascript 输入值onkeydown返回不正确的值(少一个),javascript,input,Javascript,Input,我正在为我们客户的项目编写一个脚本,当您达到特定输入的最大字符数时,它会自动将您锁定到下一个输入字段。由于某些原因,输入值返回的值比其应返回的值小一个,因此,当输入的额外字符超过“阈值”时,会切换到“下一个”输入 下面是我观察输入值的脚本-ofc,如果有更好的方法,请建议:)- 以及工作输入的jsFiddle。第一个输入限制为“2”个字符,但当您键入3时,它将跳转到下一个输入。我认为这与keypress/keydown事件没有读取初始值有关,但我不知道如何修复它。非常感谢您的帮助 我正在控制台中

我正在为我们客户的项目编写一个脚本,当您达到特定输入的最大字符数时,它会自动将您锁定到下一个输入字段。由于某些原因,输入值返回的值比其应返回的值小一个,因此,当输入的额外字符超过“阈值”时,会切换到“下一个”输入

下面是我观察输入值的脚本-ofc,如果有更好的方法,请建议:)-

以及工作输入的jsFiddle。第一个输入限制为“2”个字符,但当您键入3时,它将跳转到下一个输入。我认为这与keypress/keydown事件没有读取初始值有关,但我不知道如何修复它。非常感谢您的帮助

我正在控制台中记录结果:


问题是,
onkeypress
会在您希望它启动之前启动。您只需将
onkeypress
替换为
onkeypup
,这样您就可以确保在检查
元素
值时正确设置它


请参阅:

是,它将返回一个较小的值,只需在长度检查中使用+1即可。这是因为在更新字段之前执行了
onkeypress
事件,这意味着使用
e.preventDefault()
该字母将不会出现在字段中。您可以使用
onkeyup
否则。

使用
onkeyup
代替
onkeypress

onkeyup
在字段更新后被激发

if (this.value.length == this.getAttribute('data-autotab-length')) {
                nextInput.focus();  
                console.log('Limit reached here');
                return false; // this is prevent the third value being entered
            }

该死,总是这么简单:)!非常感谢你。
if (this.value.length == this.getAttribute('data-autotab-length')) {
                nextInput.focus();  
                console.log('Limit reached here');
                return false; // this is prevent the third value being entered
            }