javascript - 绑定(bind)事件期间检索到的输入值不正确

标签 javascript jquery jquery-events

我正在根据按以下方式键入文本框的输入执行一些过滤操作:

$("#search").on('change keyup', function () {
    var search = $.trim($(this).val());
    ...perform search based operation
});

我遇到的问题是,当快速输入输入时,使用 .val() 检索到的最新值并不总是最新的。例如,将搜索变量的值记录到控制台并搜索“jquery”时;这是快速输入时记录的内容:

LOG: j
LOG: j
LOG: j
LOG: j
LOG: j
LOG: j

减慢击键速度会得到正确的结果:

LOG: j
LOG: jq
LOG: jqu
LOG: jque
LOG: jquer
LOG: jquery

当我从 .on 中删除基于搜索的操作并仅记录击键时,所有内容都会正确记录。我相信这可能是某种类型的时间问题,但不确定这是否是我不知道的已知问题。我正在针对 IE9/jQuery 1.9.1 运行此程序。值不正确的原因可能是什么?

更新: fiddle :http://jsfiddle.net/bPuJ5/15/

enter image description here

最佳答案

我建议使用 keydown 而不是 keyup

Fiddle

Keyup 在释放按键时触发。看起来,当您快速键入或按住某个键时,直到没有更多的按键被按下时,keyup 事件才会触发。

如果您不希望该功能在每次按键时触发,您可以实现一个短暂的延迟或自上次按键检查以来耗时,以查看是否执行搜索。

关于javascript - 绑定(bind)事件期间检索到的输入值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817686/

相关文章:

javascript - AngularJS - 从代码重定向到另一个域

javascript - 为什么当我在框中输入数字并选择 Guess 时运行数字 randomNumber 函数

javascript - 首先触发事件...在 jQuery 中使用 $.data 的替代方案

php - jquery自动完成标签问题

javascript - 取消选择滚动开始时的所有 ListView 元素

javascript - 谷歌电子表格脚本在从单元格读取时将逗号更改为句号?

javascript - 如何在 js 中定位并影响 dom 元素(新手)

javascript - React-materialize-css 模态不工作,因为它无法读取 M 的模态类

javascript - 如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %

javascript - 操作在其他函数中打开的 JQuery 对话框