2012-07-21 57 views
2

我的<form>提交没有做任何事情,我认为这是因为动作被一些JQuery代码拦截(还有什么?)。在我相当复杂的Web应用程序中,我甚至无法找到哪行代码拦截行为 - 是的,我写了他们的每一行,但我仍然不知道。如何找到截取我的表单提交的内容?

问题是:一般来说,有没有一种有效的方法来跟踪哪段JavaScript代码正在拦截指定的操作?

+0

事实证明,没有什么是拦截我的表单提交动作处理程序。为了节省屏幕空间,我隐藏并显示了所有评论提交按钮 - “$('。comment_submit_button')。hide(); ('。comment_submit_button')。show(); });()。('。comment_textarea')。focus(function(){(this).closest('form')。 ()。('。comment_submit_button')。hide(); });('。comment_submit_button')。blur(function(){ $(this).closest('form')。 '当我点击一个提交按钮时,它的评论textarea'blur'忠实地隐藏了提交按钮,并且不提交我的表单。摆脱上面的JS作品,但是有真正的答案吗? – Jerry 2012-07-21 14:28:50

回答

9
console.log($('form').data('events')); 

将为您提供给定DOM元素的附加事件列表。

$.each($('form').data('events'), function() { 
    $.each(this, function() { 
     console.log(this['handler'].toString()); 
    }); 
}); 
+0

+1永远不会知道!非常有用的信息。 – techfoobar 2012-07-21 13:10:13

+0

即使对于jQuery代码,这可能并不全面。例如。你可以劫持点击提交按钮:http://jsfiddle.net/hbDah/ – millimoose 2012-07-21 13:16:01

+0

@millimoose,在这种情况下,只需调整选择器,除了表单之外,还可以使用':submit'。 – 2012-07-21 13:19:40

2

一个快速简便的方法是使用谷歌Chrome浏览器的开发者工具:

,你甚至可以得到它的源代码。

  • 按下Ctrl键++
  • 选择你的元素。
  • 点击事件,查看可能被“拦截”的submit

enter image description here

+0

+1谢谢,很高兴知道。 – Jerry 2012-07-21 14:33:34