2012-07-21 53 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