从AJAX提交中排除表单



我使用AJAX提交位于div #cart-container内的两个表单。

有第三个表单,我不想通过AJAX在这个div中提交。

我试图只针对表单,但由于某种原因,我能够让代码工作的唯一方法是通过调用以下代码:

$('#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() {

谁能告诉我如何从调用中排除一个表单?

谢谢。

你可以这样做:

$('#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() {

当你在做-> on('submit','form',function(){whatever})

理解你传递的参数

  1. 'submit' -> event
  2. 'form' ->选择符
  3. function(){whatever} ->当所选元素发生此事件时调用的函数。

问题是你的选择器…你通过提供"表单"来瞄准所有表单…请提供一个不那么通用的选择器。

示例:如果你有这样的东西

<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 })

最新更新