代码之家  ›  专栏  ›  技术社区  ›  Avery235

表单OnSubmit与OnClick

  •  1
  • Avery235  · 技术社区  · 7 年前
    <form>
      <input />
      <button
        onClick={e => {
          e.preventDefault();
          alert("clicked");
        }}
      >
        click
      </button>
    </form>
    

    Edit zrzz6pj7kx

    如果我移动 onClick 处理程序到 form 's onSubmit 我会得到完全相同的行为。

    我在google上搜索的大多数答案都表明不同之处在于 一次点击 不会对通过提交表单做出反应 return 按键,但这不是如代码沙盒示例所示的那样。

    除了处理DOM操作/事件模拟之外,它们的行为何时会有所不同?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Draconis    7 年前

    基本上,这取决于浏览器。某些浏览器可能会调用提交按钮 onClick 当通过按返回键提交表单时,但标准不要求这样做。其他人可能只会打电话 一次点击 按回车键时 如果选择了提交按钮 . 其他人可能不会启动它,除非手动单击按钮。

    如果您想要最好的便携性,请使用 onSubmit 它的目的是:检测表单提交。

        2
  •  0
  •   Chris    6 年前

    另一个主要区别是事件的目标。

    Note that the submit event fires on the <form> element itself, and not on any <button> or <input type="submit"> inside it. (Forms are submitted, not buttons.)
    

    https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event