我如何通过shift 单击事件传递到基础输入元素



对于包裹在<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>

相关内容

最新更新