【问题标题】:Submit a form with keypress on submit button, does it trigger onclick?使用提交按钮上的按键提交表单,它会触发 onclick 吗?
【发布时间】:2018-06-23 01:20:25
【问题描述】:

当将焦点放在提交按钮上,然后在下面的 sn-p 中按 SPACE 时,它会“点击”(使用键盘)提交按钮,并触发onclick="alert()"

这适用于 Chrome 和 Firefox。

问题:在提交输入(即焦点)上按下 SPACE 键会触发onclick,这是否是普遍事实(在所有浏览器、所有平台中)?如果是这样,它记录在哪里?

<form>
<input type="submit" onclick="alert()" />
</form>

请注意,这与Submit form with Enter key without submit button? 不是同一个问题。

【问题讨论】:

  • 在 Firefox 中它不起作用。如果您想消除这种行为,this 可能会让您感兴趣
  • @GalAbra 不,我不想消除它,恰恰相反,我想确保它在所有浏览器上都是正确的 ;)
  • @GalAbra:它确实适用于 Firefox,您必须先将焦点放在按钮上(使用 TAB 或通过单击按钮,将鼠标移出按钮,然后释放按钮)。
  • 不,并非在所有情况下都如此,也不应该如此。当您单击它时,单击事件只能 100% 依赖。如果您想 100% 处理空间(或输入),那么您还应该处理关键事件。
  • @Archer 你认为developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/… 不被视为标准吗? (见第一段开头)

标签: javascript html


【解决方案1】:

对于原生 HTML 元素,按钮的 onclick 事件将在鼠标单击和按下 Space 或 Enter 时触发,而按钮具有焦点。

Here's a MDN link for reference

鼠标用户和键盘用户都可以操作按钮。对于原生 HTML 元素,按钮的 onclick 事件将在鼠标单击和按下 Space 或 Enter 时触发,而按钮具有焦点。

【讨论】:

    【解决方案2】:

    也许你真正在寻找什么

    注册onsubmit的表单,不管是哪个元素。

    var i = 0;
    document.getElementById('myForm').onsubmit = function(e) {
      console.clear();
      console.log( "Sending! " + ++i );
      
      // do not actually send (just for demonstration puposes)
      e.preventDefault();
      return false;
    }
    <form id="myForm" action='#'>
      <input type="text"> Hit Enter on me!<br/>
      <input type="submit" value="Hit me with spacebar">
    </form>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 2010-09-12
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 2020-06-26
      相关资源
      最近更新 更多