2016-02-29 79 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/