[英]Clear textarea input after enter key press
我正在使用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 = "";
}
当textarea处于onfocus时按Enter键时,文本被清除但似乎插入一个新行字符,光标将转到textarea中的下一行。
我怎样才能摆脱这个并拥有一个完全空的textarea?
您需要做的是在按Enter键时取消浏览器的默认行为(您必须阻止浏览器添加新行)。
解决方案:使用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
。 这是一个不好的做法,我建议你使用新方法。
那是因为enter键的默认行为是插入一个新行。 要防止这种情况发生,请从keydown事件处理程序return false
。
window.onkeydown=function(event){
if(event.keyCode==13){
sendNew();
return false; // prevent default behavior if ENTER key
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.