我正在尝试检查输入是否已更改。问题是 - 如果我将使用此代码:
trigger.keyup(function() {
current_input = getSearchString();
is_changed = (current_input != previous_input);
previous_input = current_input;
});
当用户在短暂延迟“E”(输入值将为“QE”)之后按下(例如“Q”)并首先释放“Q”键时,此逻辑将中断。 previous_input
将设置为“QE”。用户发布“E”键和脚本比较相等的字符串。所以,当输入实际上发生了变化时,对于我的脚本则不然。知道如何解决这个问题或有没有不同的方法(不是用html5事件'输入')?
答案 0 :(得分:6)
使用keydown
的{{1}} 代替 ,这样 依赖于用户是否释放钥匙。
答案 1 :(得分:0)
仅依靠关键事件不是一种可靠的机制。例如:什么是用户从剪贴板粘贴文本,或者他是否将文本拖放到文本框中(是的,dnd适用于文本框)。
要考虑所有可能的频道,您可以使用textchanged
事件。详情请见http://zurb.com/playground/jquery-text-change-custom-event
$('#selector').bind('textchange', function (e, prevText) {
// do your stuff here
});