按下回车键后清空文本框输入内容

7

我正在使用JavaScript创建一些聊天应用程序,可以让用户在按下回车键后发送消息。

window.onkeydown=function(event){
    if(event.keyCode==13){
        sendNew();
    }
}

sendNew() 函数中;

var msg=document.getElementById('txt').value.toString().trim();
    if(msg!=="") {
    //send message        
    document.getElementById('txt').value = "";
    }

2个回答

16
你需要做的是取消在按下回车键时浏览器的默认行为(防止浏览器添加新行)。
解决方案:使用 event.preventDefault()。文档: https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault 尝试这段代码:
window.onkeydown=function(event){
    if(event.keyCode==13){
        sendNew();
        if(event.preventDefault) event.preventDefault(); // This should fix it
        return false; // Just a workaround for old browsers
    }
}

一些开发者会忘记使用 event.preventDefault,而使用 return false。这是一个不好的习惯,我建议你使用新的方法。


2
在Chrome 53中,return false对我并没有起作用,但是event.preventDefault()却可以。 - Nathan Long

4

这是因为回车键的默认行为是插入一个新行。为了防止这种情况发生,可以从keydown事件处理程序中返回false

window.onkeydown=function(event){
    if(event.keyCode==13){
        sendNew();
        return false; // prevent default behavior if ENTER key
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接