按键按下时输入值返回不正确的值(少一个)
Input value onkeydown returns incorrect value (one less)
我正在为客户的项目编写一个脚本,当您达到特定输入的最大字符数时,该脚本会自动将您编入下一个输入字段。由于某种原因,输入值返回的值比应有的值少一个,因此当输入超过"阈值"的额外字符时,选项卡将转到"下一个"输入。
这是我监视输入值的脚本 - ofc,如果有更好的方法,请告知:) -
var watchLength = function (watch) {
watch.onkeypress = function () {
var nextInput = getNextSibling(this);
console.log(this.getAttribute('data-autotab-length'));
console.log(this.value.length);
if (this.value.length == this.getAttribute('data-autotab-length')) {
nextInput.focus();
console.log('Limit reached here');
}
};
};
以及工作输入的 jsFiddle。第一个输入限制为"2"个字符,但当您键入 3 时,它会跳转到下一个输入。我认为这与按键/按键事件未读取初始值有关,但我不知道如何解决它。任何帮助真的非常感谢。
我正在控制台中记录结果:
http://jsfiddle.net/qdnCZ/
问题是,onkeypress
会在你想要它之前触发。您可以简单地将onkeypress
替换为 onkeyup
,这样您就可以确保<input>
元素value
在检查时正确设置。
请参阅:http://jsfiddle.net/qdnCZ/1/
是的,它会少返回一个,只需在长度检查上使用 +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
}
更新的小提琴
相关文章:
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- Amazon S3 REST API大小不正确
- Javascript Reg Exp不正确匹配
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- DIV并排,位置不正确
- 仅在IE中,javascript中的时区名称不正确
- select2 - 如果多个选项共享一个值,则返回不正确的选定选项
- 按键按下时输入值返回不正确的值(少一个)
- 当我给它一个不存在的类名时,表无法正确呈现
- 其中一个 PHP 发布的值不正确
- 如何避免函数在条目不正确时定向到另一个页面
- 替换不正确使用“;a“;以及“;一个“;在文本输入中
- 为什么给了一个不正确的密钥,我的解密最终失败了
- 包含在nunjucks (grunt-nunjucks-2-html)是基于一个不正确的路径
- 为什么当我回到前一页,我有一个不正确的url (Chrome下的iOS,浏览器回来)
- 我在一个php页面中有两个独立的函数.Javascript函数加载正确,但jQuery不正确
- ionicHistory美元.手动返回前一个状态时,backView的状态不正确
- d3 x轴上有一个不正确的值
- 在另一个函数中返回一个函数的结果会产生不正确的结果