Javascript 如何确定是谁触发提交事件?

Javascript 如何确定是谁触发提交事件?,javascript,Javascript,我遇到的情况是,我无法确定是谁在调用表单提交 我有一个像下面这样的dom <form method="POST" action="action.do"> <button onclick = "eventHandler()">Test</button> </form> 试验 每当我点击按钮时,我都会看到一个断点在提交时命中,并且无法从调用堆栈中找出任何东西 需要帮助通常,避免使用onxyz-属性样式的事件处理程序。但是如果你这样做了,请调用他们

我遇到的情况是,我无法确定是谁在调用表单提交

我有一个像下面这样的dom

<form method="POST" action="action.do">
<button onclick = "eventHandler()">Test</button>
</form>

试验
每当我点击按钮时,我都会看到一个断点在提交时命中,并且无法从调用堆栈中找出任何东西


需要帮助

通常,避免使用
onxyz
-属性样式的事件处理程序。但是如果你这样做了,请调用他们设置
并正确传递事件;如果要在处理程序中使用
return false
,以防止事件的默认操作,您可能还需要包括
return

<button onclick = "return eventHandler.call(this, event)">Test</button>
<!-- --------------^^^^^^--------------^^^^^^^^^^^^^^^^^             -->
这样,
eventHandler
将使用正确的
this
调用,并传递事件对象

注意:过时的浏览器IE8和更早版本没有
addEventListener
。过时的浏览器IE9-IE10拥有它,但当它们处于“兼容性”模式时,就假装没有。在“兼容性”模式下,IE11同样会步履蹒跚。如果需要支持其中任何一项,可以使用
hookEvent
功能


当然,也可以使用jQuery之类的库,或者AngularJS或React之类的框架来为您处理这些跨浏览器问题。

通常,避免使用
onxyz
-属性样式的事件处理程序。但是如果你这样做了,请调用他们设置
并正确传递事件;如果要在处理程序中使用
return false
,以防止事件的默认操作,您可能还需要包括
return

<button onclick = "return eventHandler.call(this, event)">Test</button>
<!-- --------------^^^^^^--------------^^^^^^^^^^^^^^^^^             -->
这样,
eventHandler
将使用正确的
this
调用,并传递事件对象

注意:过时的浏览器IE8和更早版本没有
addEventListener
。过时的浏览器IE9-IE10拥有它,但当它们处于“兼容性”模式时,就假装没有。在“兼容性”模式下,IE11同样会步履蹒跚。如果需要支持其中任何一项,可以使用
hookEvent
功能


当然,也可以使用jQuery之类的库,或AngularJS或React之类的框架,为您处理这些跨浏览器问题。

因为
按钮中未指定
类型
属性:

<button onclick = "eventHandler()">Test</button>
测试

它将默认的
类型
设置为
提交
,因此点击此
按钮
,在完成
事件处理程序()后提交
表单
。要使
按钮
不提交表单,请添加值为
按钮
类型
属性

因为
按钮
标记中未指定
类型
属性:

<button onclick = "eventHandler()">Test</button>
测试

它将默认的
类型
设置为
提交
,因此点击此
按钮
,在完成
事件处理程序()后提交
表单
。要使
按钮
不提交表单,请添加值为
按钮
类型
属性

下面是您要查找的内容的完整代码:

函数eventHandler(e){
console.log(如target);
}

标题
试验

以下是您要查找的内容的完整代码:

函数eventHandler(e){
console.log(如target);
}

标题
试验

try
e.target
from event objective如果定义为
function eventHandler(e){…}
请参见
e.target
当您指定不带type属性的按钮标记时,默认值为'submit',在eventHandler()完成后提交此表单。要防止它,请更改按钮标记的类型属性。@vvtx。非常感谢您的帮助如果您真正想知道的是如何停止表单提交,请参见从事件对象尝试
e.target
,如果您定义为
function eventHandler(e){…}
请参见
e.target
当您指定不带type属性的按钮标记时,默认值为“提交”,它在eventHandler()完成后提交此表单。要防止它,请更改按钮标记的类型属性。@vvtx。非常感谢您的帮助如果您真正想知道的是如何停止表单提交,请参阅@JohnHascall:Quite。我没有理由不在答案中包括这些。@JohnHascall:完全正确。我没有理由不在答案中包括这一点。