我有一個函數,當前正在處理.keypress事件時,用戶正確的東西在文本框中它做了一些代碼,但我希望同樣的事件被觸發也當用戶清除文本框.change沒有幫助,因爲它的用戶後觸發焦點更改到別的jquery:如何觸發一個事件,當用戶清除文本框
感謝
我有一個函數,當前正在處理.keypress事件時,用戶正確的東西在文本框中它做了一些代碼,但我希望同樣的事件被觸發也當用戶清除文本框.change沒有幫助,因爲它的用戶後觸發焦點更改到別的jquery:如何觸發一個事件,當用戶清除文本框
感謝
的keyup
事件會檢測用戶是否已經清除了箱子,以及(即退格引發事件,但退格不會引起IE中的keypress
事件)
$("#inputname").keyup(function() {
if (!this.value) {
alert('The box is empty');
}
});
由於喬希說,這個被炒魷魚對於被輸入按下每一個字符代碼。這主要僅表明您需要使用keyup事件來觸發退格,而不是您當前使用的keypress
事件。
這將觸發任何非字符鍵碼的警報。 – 2010-12-09 21:55:01
是的 - 你說得對。有人指出應該使用keyup事件,因爲OP說他們已經在keypress事件中存在代碼(backspace不會引發)。 – 2010-12-09 21:57:29
在您的.keypress或.keyup函數中,檢查輸入的值是否爲空。例如:
$("#some-input").keyup(function(){
if($(this).val() == "") {
// input is cleared
}
});
<input type="text" id="some-input" />
Jonathon Bolster的解決方案並不涵蓋所有情況。我適應它通過剪切和粘貼也包括修改:
$("#inputname").on('change keyup copy paste cut', function() {
//!this.value ...
});
看到http://jsfiddle.net/gonfidentschal/XxLq2/
不幸的是這是不可能趕上在字段的值使用javascript設定的情況下。如果你自己設置這個值,這不是一個問題,因爲你知道你什麼時候這麼做......但是當你使用像AngularJS這樣的庫在狀態改變時更新視圖的話,那麼它可以做更多的工作。或者你必須使用計時器來檢查值。
另請參閱Detecting input change in jQuery?的答案,它暗示了現代瀏覽器可以理解的「輸入」事件。所以剛:
$("#inputname").on('input', function() {
//!this.value ...
});
,這是否以簡潔的方式正在監聽的textarea /輸入型「輸入」事件的另一種方式:文本字段
/**
* Listens on textarea input.
* Considers: undo, cut, paste, backspc, keyboard input, etc
*/
$("#myContainer").on("input", "textarea", function() {
if (!this.value) {
}
});
這裏沒有解決方案修復的情況下,如果你使用type =「搜索」和默認清除按鈕。 – luky 2016-10-08 13:23:25