确定从onsubmit中提交表单的元素

Chr*_*nes 9 html javascript dhtml

有没有办法确定哪个元素在onsubmit处理程序中提交了一个表单?试图编写一个知道点击了哪个元素的通用处理程序.例如,给定以下形式:

<form onsubmit="onSubmitHandler">
    <input type="submit" name="submit1" />
    <input type="submit" name="submit2" />
</form>
Run Code Online (Sandbox Code Playgroud)

如何在onSubmitHandler中确定单击了哪个提交按钮?我尝试了event.target/event.srcElement,但它提供了表单,而不是实际的提交按钮.

更新:我在这里写一个通用控件,所以它不知道表单上有什么.解决方案需要在不知道和更改表单的html的情况下工作.我的后备是走DOM,找到可能导致提交的所有按钮,但我想避免这种情况.

Jos*_*ary 3

另一种解决方案是将事件触发器从表单的提交事件移至提交元素的 onclick 事件,如下所示:

<form name='form1'>  
    <input type="submit" name="submit1" onclick="onSubmitHandler"/>
    <input type="submit" name="submit2" onclick="onSubmitHandler"/>
</form>
Run Code Online (Sandbox Code Playgroud)

在处理函数中,您只需检查事件目标的名称即可确定提交元素,如果您需要访问表单的信息或其他元素,则可以从提交元素的“form”属性中获取。

  • 除此之外,您还需要一个 onsubmit 处理程序,因为无需按下按钮即可发生提交事件。该规范留下了半开放的问题,即在关注非按钮控件时按 Enter 键激活哪个按钮(如果有)&lt;http://www.w3.org/TR/html5/forms.html#default-button &gt;,并且浏览器不一致(尽管根据我的实验,它似乎要么是表单上的第一个按钮,要么根本没有)。 (2认同)