jquery绑定提交事件 – 查找调用者
我怎样才能找到绑定事件的调用者/发件人。
$(this).bind("submit", function(caller) { ... });
我发现我可以使用“caller.originalEvent.explicitOriginalTarget”,但这仅适用于firefox。
编辑:
我正在使用来自position-relative.net的jqueryvalidation库我想让它如果一个按钮在发送者上有一个名为“bypass”的类,这使得validation引擎只返回true,因此可以提交表单。 即我正在使用ASP.NET,所有按钮按下都是回发(表单提交)。 我只是想做一个后退按钮。
我添加了这段代码
if ((caller.originalEvent.explicitOriginalTarget != null) && (caller.originalEvent.explicitOriginalTarget.className == "bypass")) { return true; }
在第71行,就在这条线下
$(this).bind("submit", function(caller) { // ON FORM SUBMIT, CONTROL AJAX FUNCTION IF SPECIFIED ON DOCUMENT READY
意见和建议表示赞赏。
谢谢
更新:根据您的评论,您正在查看哪个提交按钮触发了提交。 您无法使用表单的submit
事件执行此操作 – 但您可以使用提交按钮上的click
事件:
$(this).find("input[type=submit]").click(function() { var bypass = $(this).hasClass("bypass"); });
提交按钮的click
事件发生在表单的submit
事件之前,因此您可以使用它来设置标志,然后在表单的提交处理程序中使用该标志。 标志可以在某处的JavaScript代码中,表单上的隐藏字段,您添加到表单元素的属性等。
关于target
与this
相关的以下信息可能不再与您的问题直接相关,但我将其离开,因为需要了解target
与this
人可能会找到您的问题,因此它可能对他们有用。
event.target
是事件实际发生的元素。 对于冒泡事件,这可能是您附加处理程序的元素的后代:
$(this).bind("submit", function(event) { var target = event.target; });
this
是您设置事件处理程序的元素(这由jQuery确保 ):
$(this).bind("submit", function(event) { // `this` is the element you hooked the event on });
由于您正在使用submit
事件并直接挂接表单,因此我希望target
与this
相同。
三个例子 (两个关于forms,一个只是一般)
1.A. 表单提交和JavaScript变量 ( 实时版本 )的示例 :
这是一个使用表单提交的示例,区分target
和this
,并显示连接提交按钮的单击事件,以便我们知道他们是否具有“绕过”类。 这在JavaScript代码中使用了一个标志:
Target Example
1.B. 表单提交和属性 ( 实时版本 )的示例 :
这与上面的示例相同,但在JavaScript代码中使用属性而不是标志:
Target Example
2. target
与this
( 实时版本 ) 之间存在差异的示例 :
这个例子不再与你的问题相关,但是我将它留给任何需要一个target
与this
target
的例子。
Target Example I'm one, and this is a child element
I'm two, and this is two children deep
I'm three, there are no child elements here