2012-09-24 85 views
1

我有一套其中我在點擊提交HTML表單鏈接具有id爲「給ajaxForm」jQuery的防止各種形式的一次提交

for ($year = 2008; $year <= intval(date('Y')); $year++) { 
    if ($year == $currentYear) 
     continue; 
    echo '<div style="float:right;padding-right:20px;"><form name="year' . $year . 'Form1" id= "ajaxForm" action="/managementDashboard#visibleTab-5" method="post"><input name="getRecordsFor" type="hidden" value="' . $year . '"><a id="buttonRed" href="javascript:document.year' . $year . 'Form1.submit();">' . $year . '</a></form></div>' . chr(10); 
} 

然而,而不是默認提交使用jQuery發佈與此數據:

 jQuery("form#ajaxForm").click(function(event) { 

     /* stop form from submitting normally */ 
     event.preventDefault(); 

     /* Send the data using post and put the results in a div */ 
     jQuery.post('/ajaxFunctions?mgmtDbrdPge=5', jQuery("#ajaxForm").serialize(), 
     function(data) { 
      jQuery("#visibleTab-5").empty().append(data); 

     } 
    ); 
    }); 

問題是,它提交所有的形式,而不是我單獨的個人。有沒有一種方法可以防止這種情況,而不必爲每個單獨的表單編寫jQuery鏈接?

更新 - 我接受了其中一個答案,因爲他的方法是合法的,但我意識到我的問題是什麼。而不是jQuery(「#ajaxForm」)。serialize(),我應該把它寫成jQuery(this).serialize()來調用點擊提交的數據,而不是使用該id的所有表單。

+0

你不能有與頁面上的多個元素相同的ID。嘗試首先解決問題,看看你的問題是否會消失。 – MrOBrian

+0

HTML標記循環在echo語句中。問題是我使用該ID來提交表單。那麼我需要爲每個表單執行相同的jQuery代碼嗎?有沒有更短的路? – wiseman7687

回答

3

看起來您有多個表單,其ID爲ajaxForm。 確保它是獨一無二的

如果你知道的Ajax表單的ID在你的頁面..然後你可以做到這一點

jQuery("form#ajaxForm ,form#myForm , form#myFormThird ").click(function(event) { 

這將確保多個元素連接到相同的事件處理程序..

更新的代碼 如果你不知道ID的話可以重複使用for循環,並附事件..

$('form').each(function() { 

    $(this).click(function(event) { 

     // Your Function 
    } 
}); 

另外,還要確保你使用。對()用於連接您的活動..而不僅僅是點擊,這樣的事件是委派..

jQuery("form#ajaxForm").on('click',function(event) { 
+0

有沒有辦法重複jQuery數據呢?我不想爲每個單獨的表單重寫相同的jquery代碼。它挫敗了當時擁有php forloop的目的。 – wiseman7687

+0

也許使用循環計數器來標識ID將有所幫助..在這種情況下,您可以直接獲取表單的index()來檢索其ID後綴。 – Sushruth

+0

Chekc更新後的帖子 –