2016-02-29 78 views
0

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

例如下图中......

enter image description here

如果用户挑选先前保存的条目,然后我使用keyUp功能只会上面的图片中读取多达13,而不是[email protected]keyUp只有在用户手动输入电子邮件的每个字符时才有效。我该如何解决这个问题?

+0

这是有道理的,对吗?如果从13开始有两个项目,应选择哪一个?输入文字会限制列表,之后您应该可以使用箭头(或鼠标)导航到正确的项目。这就是一个下拉通常如何工作.. – GolezTrol

+0

btw只是建议如果'keyup'无法触发,你为什么不使用'更改keyup mousedown'更多的事件触发。 – mmativ

+0

[textbox browser autocompletion options does not fire keypress/keyup]可能重复(http://stackoverflow.com/questions/9531612/textbox-browser-autocompletion-options-do-not-fire-keypress-keyup) – Anthony

回答

2

你可以结合使用这一点。

$('#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"/>

1

我不确定你可以单独使用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>

+0

问题在于变化只会在模糊情况下发生。 –

+1

你也可以使用'input'事件。 https://developer.mozilla.org/en-US/docs/Web/Events/input – idan

1

可以绑定/监听input事件,所有主要的浏览器都有某种程度的支持对他们的支持版本。实施例与jquery:

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

将触发对发生的变化对目标输入元件,而输入仍处于焦点(因此不是输入失去焦点后,像change事件),如:

  • 用户打字输入,
  • 输入使用浏览器驱动的“自动填充”时更新,
  • 使用系统剪贴板用户粘贴文本到输入

请务必查看任何支持浏览器的怪癖,特别是当用户删除已输入字符(例如使用删除键或退格键或“剪切”)时,IE9不会触发此事件。

简单,工作小提琴例如:

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