簡體   English   中英

防止點擊 label 觸發子按鈕

[英]Prevent click on label from triggering child button

當像這樣設置時,單擊具有子按鈕的 label 會觸發按鈕的 onclick 事件:

 function fireButton() { console.log("Button fired;"); }
 <label>Label <button onclick="fireButton()">Button</button> </label>

有沒有辦法防止這種情況?

添加for屬性為label。

 function fireButton() { console.log("Button fired;"); }
 <label for=''>Label <button onclick="fireButton()">Button</button> </label>

您可以將按鈕放在 label 之外

<label>Label</label>
<button onclick="fireButton()">Button</button>

您可以為標簽添加 preventDefault 並保留現有代碼:

document.querySelector("label").addEventListener("click", function(event) { 
    event.preventDefault();
}, false);

您可以使用不同的標簽,例如<span>而不是label但是如果您真的需要使用<label> ,您應該阻止 label onclick()的默認行為,如下所示:

 function fireButton(){ //add actions here } function preventDefault(event){ event.preventDefault() }
 <label onclick="preventDefault(event)">Label <button onclick="fireButton()">Button</button> </label>

這是 CSS 中的一種方法,當單擊 label 時,它也禁用觸發button:active label 覆蓋labelonClick事件不會這樣做。

label {
  pointer-events: none;
}
    
button {
  pointer-events: initial;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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