2017-09-14 63 views
0

對於包裹在<label>標籤(例如,<label> <input type="checkbox"> Some Text </label>)中的<input>,單擊<label>標籤上的事件也會被<input>標籤收到。如何通過shift + click事件傳遞給底層輸入元素?

但是,如果在點擊<label>(其他瀏覽器正常工作)的同時按下了shift鍵,則Firefox不會將點擊事件傳遞到<input>。正如在SO answer中回答的那樣,這是Firefox特定的行爲。

有沒有辦法在Firefox中關閉此功能(或覆蓋),以便在<label>發生Shift +單擊事件時收到Shift +單擊事件<input>

+0

使用stopPropagation它冒泡事件停止事件鏈接。這可以幫助你或者我不明白這個問題嗎? –

+0

@VikrantChaudhary你設法檢查了答案嗎? – Dekel

+0

@Dekel是的,我做了,但是我最終實現了它,回答! –

回答

1

既然firefox阻止了這一點,您將需要自己創建此行爲。

下面是一個簡單的例子(注意,您可能需要添加/更改的事情,由於shift鍵:

function show(event){ 
 
    el = event.srcElement||event.target; 
 
    if (el.nodeName == "LABEL") { 
 
    event.preventDefault(); 
 
    ev = new Event('click'); 
 
    document.getElementById(el.getAttribute('for')).dispatchEvent(ev); 
 
    } else { 
 
    el.checked = !el.checked; 
 
    alert((el).id); 
 
    } 
 
} 
 
document.getElementById('checkbox').addEventListener('click', show, false); 
 
document.getElementById('label').addEventListener('click', show, false);
<input type="checkbox" id="checkbox"/> 
 
<label for="checkbox" id="label">Click me!</label>

+0

我結束了實施對我的用例來說有點不同。但謝謝你的回答! –

相關問題