2014-09-10 70 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()是空字符串。

相关问题