[英]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.