【问题标题】:form onSubmit vs onClick表单 onSubmit vs onClick
【发布时间】:2018-11-03 02:19:27
【问题描述】:
<form>
  <input />
  <button
    onClick={e => {
      e.preventDefault();
      alert("clicked");
    }}
  >
    click
  </button>
</form>

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

我在 Google 上搜索的大多数答案都表明,区别在于 onClick 不会对通过 return 按键提交表单做出反应,但正如代码框示例中所见,情况并非如此。

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

【问题讨论】:

  • 因为它们在技术上是独立的事件。单击事件捕获鼠标单击事件。但是,有很多方法可以在不点击的情况下提交表单。从另一个 JavaScript 触发器,使用键盘返回等......所以它们是不同的。
  • 如果有多个按钮或输入,onsubmit默认提交整个表单,onclick可以但用于更动态的东西,如滑出之类的东西,但它确实在你写的函数中。

标签: javascript html forms reactjs


【解决方案1】:

基本上,这取决于浏览器。当通过按回车键提交表单时,某些浏览器可能会调用提交按钮的onClick,但标准并没有强制要求这样做。其他人可能只在按下返回时调用onClick如果选择了提交按钮。除非手动单击按钮,否则其他人可能不会触发它。

如果您想要最佳的可移植性,请使用 onSubmit 来实现它的设计目的:检测表单提交。

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 2019-12-14
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多