1

我正在尝试检查输入是否已更改。问题是 - 如果我将使用此代码:

trigger.keyup(function() {
    current_input = getSearchString();
    is_changed = (current_input != previous_input);
    previous_input = current_input;
});

当用户按下例如“Q”,经过短暂的延迟“E”(输入值将是“QE”)并首先释放“Q”键时,此逻辑将中断。previous_input将设置为“QE”。用户释放“E”键,脚本比较相等的字符串。因此,当输入实际上确实发生了变化时,对于我的脚本来说却没有。知道如何解决这个问题,或者有什么不同的方法可以做到这一点(不是使用 html5 事件“输入”)?

4

2 回答 2

6

使用keydown 而不是keyup这样您就不必依赖用户是否释放密钥。

于 2013-04-26T13:20:55.980 回答
0

仅依赖于关键事件不是可靠的机制。例如:什么是用户从剪贴板粘贴文本,或者如果他将文本拖放到文本框中(是的,dnd 适用于文本框)。

要考虑所有可能的渠道,您可以使用该textchanged事件。详情在这里:http: //zurb.com/playground/jquery-text-change-custom-event

$('#selector').bind('textchange', function (e, prevText) {
    // do your stuff here
});
于 2013-04-26T13:25:22.303 回答