keyup 不读取输入值

keyup does not read input value

我注意到如果用户选择之前保存的条目,JQuery 中的 keyUp 不会读取输入值。

例如下图中...

如果用户选择之前保存的条目,那么我的 keyUp 函数将只读取上图中的 13,而不是 13eb@queensu.cakeyUp 仅在用户手动输入电子邮件的每个字符时才有效。我该如何解决这个问题?

我不确定您是否可以单独使用 keyup 解决问题...但是,您可以使用事件组合并将它们绑定到控件。

举个例子。根据您的具体情况进行更新。

var counter = 0;
$("#myId").bind("keyup change paste input propertychange mousedown", function(event) {
  counter++;
  $("p").text(counter + ": " + event.type);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myId">
<p></p>

你可以结合使用这个。

$('#text').on('change keyup mousedown',function(){
alert("1");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="text"/>

您可以 bind/listen input 事件,所有主要浏览器在其支持的版本中都对这些事件提供了一定程度的支持。 jquery 示例:

$("#search").on("input", function() {
  console.log($(this).val());
});

将在输入仍处于焦点状态时触发目标输入元素的更改(因此不会在输入失去焦点之后,如 change 事件),例如:

  • 用户输入,
  • 使用浏览器驱动时的输入更新"autofill",
  • 用户使用系统剪贴板将文本粘贴到输入中

一定要查看支持的任何特定于浏览器的怪癖,特别是当用户删除已经输入的字符时(例如使用删除键或退格键或 "cut" 时),IE9 不会触发此事件。

简单,有效Fiddle示例:

https://jsfiddle.net/q6doxbur/2/