1

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

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

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

日志:j
日志:j
日志:j
日志:j
日志:j
日志:j

减慢击键速度会产生正确的结果:

日志:j
日志:jq
日志:jqu
日志:jque
日志:jquer
日志:jquery

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

更新:小提琴:http: //jsfiddle.net/bPuJ5/15/

在此处输入图像描述

4

1 回答 1

1

我建议使用keydown而不是keyup.

小提琴

Keyup 在释放键时触发。似乎当您快速键入或按住一个键时,keyup 事件不会触发,直到没有更多的键被按住。

如果您不希望在每次按键时触发该功能,您可以实施自上次按键检查后的短暂延迟或经过的时间,以查看是否执行搜索。

于 2013-05-29T15:33:43.463 回答