对于包裹在<label>
标签中的<input>
(例如<label> <input type="checkbox"> Some Text </label>
),<input>
标签也收到了<label>
标签上的单击事件。
但是,如果在单击<label>
时也按下Shift键(其他浏览器工作正常),则Firefox不会将单击事件传递给<input>
。正如此答案所回答的那样,这是一种特定于Firefox的行为。
是否有一种方法可以在firefox中关闭(或覆盖),因此当chhift 单击<label>
上发生时,<input>
收到了shift 单击事件?
,因为 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>