簡體   English   中英

事件偵聽器將在元素更改后停止處理該元素(僅限 JavaScript)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM