2013-05-16 44 views
0

我想在這個pagejQuery-提交表單與JS或jQuery的

此提交表單之前調用谷歌分析事件跟蹤方法之前調用一個函數/方法是,我現在有代碼:

$(function() { 

    $('#findbooking input').each(function(){ 
     $(this).blur(function() { 

      if (!$(this).val()) { 
       _gaq.push(['_trackEvent', 'Rebooking', 'completed', $(this).parent().parent().text()]); 
       dcsMultiTrack('WT.ac', 'See_and_Change_my_booking_completed'); 
      } else { 
       _gaq.push(['_trackEvent', 'Rebooking', 'skipped', $(this).parent().parent().text()]); 

      } 
     }); 
    }); 
}); 

問題是,當用戶從每個輸入字段模糊時,dcsMultiTrack請求被激發兩次。它應該只發送一次請求。

注意:我們沒有訪問/修改源代碼,代碼將作爲解決方法放在同一頁面上。任何幫助都被高度佔用

+0

你能告訴我們一些輸入標記的標記嗎?或者它是標準輸入字段,沒有默認值? – vitozev

+0

@KristianVitozev:請檢查頁面:http://tinyurl.com/cykjdp5 – digitup

+0

您是否嘗試設置斷點來查看每次調用堆棧? – Barmar

回答

0

您可以使用submit處理程序來跟蹤表單提交事件。回調在實際表單提交之前被調用,因此您可以將跟蹤邏輯放置在那裏。這種方法保證跟蹤事件只觸發一次,而不是每次用戶將焦點從一個表單域移動到另一個表單域時。

如果我沒有正確記下您的筆記,您提供的功能是您無法訪問的外部腳本,並且您將覆蓋它將腳本直接放在頁面上。在這種情況下,您需要刪除以前連接到blur事件的處理程序。 $('#findbooking input').unbind('blur');將做的伎倆。

+0

非常感謝。如果您檢查該頁面中的源代碼,則使用ASP.Net構建它,並且該表單使用表和2個輸入字段構建,並通過點擊提交按鈕時綁定事件來提交js函數。 – digitup