Javascript 表单onSubmit vs onClick { e、 预防默认值(); 警报(“点击”); }} > 点击
如果我将Javascript 表单onSubmit vs onClick { e、 预防默认值(); 警报(“点击”); }} > 点击,javascript,html,forms,reactjs,Javascript,Html,Forms,Reactjs,如果我将onClick处理程序移动到,我将得到完全相同的行为 我在谷歌上搜索的大多数答案都表明,区别在于,onClick不会对通过return按键提交表单做出反应,但这与codesandbox示例中的情况不同 除了处理DOM操作/事件模拟之外,它们什么时候会有不同的行为?基本上,这取决于浏览器。当按下返回键提交表单时,某些浏览器可能会调用submit按钮的onClick,但标准并不强制执行此操作。如果选择了提交按钮,则其他人可能仅在按下return时调用onClick。其他人可能不会启动它,除非
onClick
处理程序移动到,我将得到完全相同的行为
我在谷歌上搜索的大多数答案都表明,区别在于,onClick
不会对通过return
按键提交表单做出反应,但这与codesandbox示例中的情况不同
除了处理DOM操作/事件模拟之外,它们什么时候会有不同的行为?基本上,这取决于浏览器。当按下返回键提交表单时,某些浏览器可能会调用submit按钮的
onClick
,但标准并不强制执行此操作。如果选择了提交按钮,则其他人可能仅在按下return时调用onClick
。其他人可能不会启动它,除非手动单击该按钮
如果您想获得最佳的可移植性,请使用
onSubmit
了解其设计目的:检测表单提交。另一个主要区别是事件的目标
<form>
<input />
<button
onClick={e => {
e.preventDefault();
alert("clicked");
}}
>
click
</button>
</form>
注意,submit事件在元素本身上触发,而不是在元素内部或任何元素上触发。(提交的是表格,而不是按钮。)
因为它们在技术上是独立的事件。单击事件捕获鼠标单击事件。但是,有很多方法可以不用单击就提交表单。从另一个JavaScript触发器,使用键盘返回等。。。所以它们是不同的。如果Submit上有多个按钮或输入,则默认情况下会提交整个表单,而onclick只能用于更动态的事情,如滑出和其他事情,但它确实存在于您编写的函数中。
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.)