2010-12-09 31 views
16

我有一個函數,當前正在處理.keypress事件時,用戶正確的東西在文本框中它做了一些代碼,但我希望同樣的事件被觸發也當用戶清除文本框.change沒有幫助,因爲它的用戶後觸發焦點更改到別的jquery:如何觸發一個事件,當用戶清除文本框

感謝

+0

這裏沒有解決方案修復的情況下,如果你使用type =「搜索」和默認清除按鈕。 – luky 2016-10-08 13:23:25

回答

40

keyup事件會檢測用戶是否已經清除了箱子,以及(即退格引發事件,但退格不會引起IE中的keypress事件)

$("#inputname").keyup(function() { 

    if (!this.value) { 
     alert('The box is empty'); 
    } 

}); 

jsFiddle

由於喬希說,這個被炒魷魚對於被輸入按下每一個字符代碼。這主要僅表明您需要使用keyup事件來觸發退格,而不是您當前使用的keypress事件。

+0

這將觸發任何非字符鍵碼的警報。 – 2010-12-09 21:55:01

+0

是的 - 你說得對。有人指出應該使用keyup事件,因爲OP說他們已經在keypress事件中存在代碼(backspace不會引發)。 – 2010-12-09 21:57:29

-1

在您的.keypress或.keyup函數中,檢查輸入的值是否爲空。例如:

$("#some-input").keyup(function(){ 
if($(this).val() == "") { 
    // input is cleared 
} 
}); 

<input type="text" id="some-input" /> 
13

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 ... 
}); 
0

,這是否以簡潔的方式正在監聽的textarea /輸入型「輸入」事件的另一種方式:文本字段

/** 
* Listens on textarea input. 
* Considers: undo, cut, paste, backspc, keyboard input, etc 
*/ 
$("#myContainer").on("input", "textarea", function() { 
    if (!this.value) { 

    } 
}); 
相關問題