按下Enter键后清除文本区域输入 [英] Clear textarea input after enter key press
问题描述
我正在使用JavaScript创建一些聊天应用程序,该应用程序允许在按下Enter键后发送消息
I was creating some chat application using JavaScript that allows one to send a message after the enter key is pressed
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 = "";
}
当文本区域为 onfocus 时按Enter键,文本将被清除,但似乎插入了新的换行符,光标将移至文本区域的下一行.
When you press the enter key when the textarea is onfocus the text is cleared but it seems to insert a new line character and the cursor goes to the next line in the textarea.
如何摆脱这种情况,并拥有一个完全空白的文本区域?
How can I get rid of this and have a completely empty textarea?
推荐答案
您要做的是取消按Enter键时浏览器的默认行为(您必须防止浏览器添加新行).
What you have to do is to cancel the default behaviour of the browser when pressing enter key (you have to prevent the browser from adding a new line).
解决方案:使用 event.preventDefault()
.说明文件: https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault
Solution: use event.preventDefault()
. Documentation:
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
并写了returnfalse
代替.这是一个不好的做法,我建议您新方法.
Some developers forget about
event.preventDefault
and writereturn false
instead. This is a bad practice, and I would suggest you the new method.
这篇关于按下Enter键后清除文本区域输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!