2

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

我不想在这个 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() {

谁能告诉我如何从通话中排除一种形式?

谢谢你。

4

2 回答 2

4

你可以这样做:

$('#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() {
于 2013-05-30T09:32:52.103 回答
1

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

理解你传递的论点

  1. “提交”-> 事件
  2. 'form' -> 目标元素的选择器
  3. function(){ 不管什么 } -> 当此事件发生在所选元素上时调用的函数。

问题出在您的选择器上。您通过提供“表单”来定位所有表单。请提供一个不太通用的选择器。

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

<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 })
于 2013-05-30T09:39:24.497 回答