2013-05-30 36 views
2

我正在使用AJAX提交位於div#cart-container內部的兩個表單。從AJAX提交排除表單

還有第三種形式,我不想通過這個div內的AJAX提交。

我都試過,只是針對的形式,但由於某些原因,唯一的辦法我已經能夠得到的代碼工作是通過調用下面的代碼:

$('#cart-container').on('submit','form',function() { 
    $(this).ajaxSubmit({ 
     beforeSubmit: function() { 
      $('#purchase-submissions, .cart').fadeTo('fast', 0.3); 
     }, 
     success: cart 
    }); 
    return false; 
}); 

function cart() { 
    var path = '/enter/embed-cart'; 
    $('#cart-container').load(path, function() { 
     $('#purchase-submissions, .cart').fadeTo('fast', 1); 
    }); 
} 

如果我的目標只是兩個在這一行上的表單,就像這樣它只調用一次AJAX。

$('#add_cart_form, #update_form').on('submit',function() { 

有誰能告訴我如何從呼叫中排除一種形式嗎?

謝謝。

回答

3

你可以這樣做:

$('#cart-container').on('submit', 'form', function (event) { 
    if (event.target.id == 'formID') return; 
    // Your ajax call code here 
}); 

這裏,formID是你想從AJAX提交排除形式的ID。

此外,您還可以嘗試針對兩種形式是這樣的:

$('#cart-container').on('submit','#add_cart_form, #update_form',function() { 
+1

絕對完美的,沒有意識到這是有可能。謝謝。 – ccdavies

1

當你正在做的 - >對( '提交', '形式',函數(){無論})

瞭解你逝去的

  1. '提交' 的參數 - >事件
  2. '形式' - > Selesctor目標元素
  3. function(){whatever} - >函數在此事件發生在所選elemtns上時調用。

問題在於您的選擇器..您通過提供'表單'來定位所有表單..請提供一個不太普遍的選擇器。

例如:如果你有這樣的事情

<div id="form-div"> 
    <form></form> 
    <form></form> 
    <form></form> 
</div> 

然後

on('submit','#form-div:nth-child(1), #form-div:nth-child(2)',function(){ whatever })