2014-09-10 106 views
0

我正在開發一個具有用戶輸入和用戶刪除功能的聊天應用程序,但是當textarea聊天輸入爲空時(當用戶刪除他所有的內容時我無法調用某個功能鍵入)當輸入值爲空時提高onkeypress元素

var msg=$("#chat_input").val(); 
if ((e.which== 8 || e.keyCode == 8) && (msg.trim() == "" || msg.length <= 1)) { 
    // call the function 

} 

當用戶鍵入一個字母,然後消除它的函數不叫,這if說法是假的 如何解決這個

+0

抱歉打字錯誤 – Sora 2014-09-10 13:39:21

+0

您是否嘗試過使用'keyup'事件來代替和/或'input'事件?另外,不要忘記在用戶使用鼠標和/或編輯菜單刪除文本時允許。請注意,如果將事件處理函數與jQuery綁定,則不需要測試'e.keyCode',因爲jQuery將確保設置'e.which'。 – nnnnnn 2014-09-10 13:41:38

回答

0

退格的最後一個字符或只爲新的線路或空格表示this.value將返回false

$('#chat_input').keyup(function(e){ 
    if (e.which == 8 && this.value == false) { 

    } 
}); 

jsFiddle Demo


valuefalse,如果僅僅是一個空格,換行等,所以你不需要trim()

(msg.length <= 1) // = true when second to last or last 
0

您可以通過使用隱真簡化這個/虛假檢查

var msg=$("#chat_input").val(); 
if (e.which== 8 && (!msg || !msg.trim())) { 
    // call the function 

} 

!msg將返回true,如果msg未定義或爲空,並且!msg.trim()將返回true,如果msg.trim()是空字符串。

相關問題