[英]Event listener will stop working on an element after it changes (javascript only)
請檢查以下可執行示例代碼...
var inputform = document.getElementById('input-form'); var form = document.getElementById('message'); var input = document.getElementById('usermsg'); function change(value) { const form =` <form name="message" action="" id="message"> <textarea name="usermsg" id="usermsg"></textarea> </form>`; const div = ` <div id="message"> <div id="usermsg"></div> </div>`; var content = value == "div" ? div : form; inputform.innerHTML = content; } usermsg.addEventListener('keypress', function(e) { if (e.which == 13 && !e.shiftKey && input.value) { input.value = ''; } });
<div id="input-form"> <form name="message" action="" id="message"> <textarea name="usermsg" id="usermsg"></textarea> </form> </div> <button onclick="change('div');">Press to div</button> <button onclick="change('form');">Press to form</button>
我正在使用此代碼來檢測用戶何時在元素內單擊
usermsg.addEventListener('keypress', function(e) {
if (e.which == 13 && !e.shiftKey && input.value) {
input.value = '';
}
});
它應該是一個偵聽器,但如果元素發生變化,它就會停止工作,甚至在之后,它又變回原來的形式。
如何防止它僅停止使用 javascript?
好的,這就是答案:
inputform.addEventListener('keypress', function(e) {
const tgt = e.target;
if (tgt.id==="usermsg") {
if (e.which == 13 && !e.shiftKey && tgt.value) {
tgt.value = '';
}
}
});
謝謝你們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.