如何将shift + click事件传递给基础输入元素?

时间:2017-09-14 17:30:39

标签: javascript jquery html firefox dom

对于包含在void MainWindow::Initialize() { Sleep(1000); WidgetA->installEventFilter( this ); WidgetA->setVisible( true ); } bool MainWindow::eventFilter( QObject *object, QEvent *event ) { if( object == WidgetA ) { if( event->type() == QEvent::Show ) { Sleep(1000); WidgetB->setVisible( true ); } } return QMainWindow::eventFilter( object, event ); } 标记中的<input>(例如,<label>),<label> <input type="checkbox"> Some Text </label>标记也会点击<label>标记上的点击事件。< / p>

但是,如果在点击<input>(其他浏览器工作正常)时按下了shift键,Firefox也不会将点击事件传递给<input>。正如本SO answer所述,这是Firefox特有的行为。

有没有办法在Firefox中关闭(或覆盖),以便在<label>上发生班次+点击时,<input>会收到shift +点击事件?

1 个答案:

答案 0 :(得分:1)

由于firefox阻止了这一点,您需要自己创建此行为。

以下是一个简单示例(请注意,由于shift密钥,您可能需要添加/更改内容:

&#13;
&#13;
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);
&#13;
<input type="checkbox" id="checkbox"/>
<label for="checkbox" id="label">Click me!</label>
&#13;
&#13;
&#13;