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