1

我的网站上有几个相同的表格,提交其中一个会导致一些奇怪的行为。这是我的设置:

我的网站上有一个 ID 为“#modelform”的表格。提交#modelform 时,会出现第二个表单,其类标识符为“.waldform”。#modelform 可以提交多次,允许在我的网站上存在多个相同的 .waldform。提交 .waldform 会调用 python 函数并将返回的值附加到网站的正文中。

问题如下:假设我已经提交了两次#modelform,并且我的网站上有 2 个 .waldforms。提交已创建的第一个 .waldform 会将其返回值附加到我的网站正文两次。提交第二个 .waldform 只会将其返回值附加到正文一次。同样,如果有 3 个 .waldform,第一个 .waldform 将附加其值 3 次,第二个 .waldform 将附加其值两次,第三个仅附加一次。

我希望每个 .waldform 仅将其值附加一次,无论站点上存在多少。

有什么想法吗?

这是我的jQuery:

var $counter = 0

$("#modelform").submit(function() {

    $counter++;

    $('body').append($counter) ;

    //MODEL FORM
    $.post('/estimate', {name: $("#mymodel").val()}, function(data) {

        var $a_var = data['title']
        var $element = $('<div class="item">' + $a_var + '</div><br>');

        $('body').append($element) ;




        //WALD FORM
        $('body').append('<form class="waldform" action="#" method="post"><input type="text" id="waldnum" value="' + $counter + '"/><input type="submit" value="Wald Test" /></form>');

        $(".waldform").submit(function() {

        //post the form values via AJAX...
        $.post('/wald', {name: $(this).find('#waldnum').val()}, function(data) {

            var $a_var = data['title']
            var $element = $('<div class="item">' + $a_var + '</div><br>');

            $('body').append($element);



            });

            return false ;
        });



    });

    return false ;
});
4

1 回答 1

2

在提交模型表单时调用的函数中,您附加了一个 waldform 类的表单,然后将一个提交处理程序附加到 ENTIRE 类。所以,你提交模型表单,制作一个 waldform 并提交给第一个 waldform。然后你提交模型表单,制作第二个 waldform,并将提交事件附加到整个班级,所以你的第一个 wald 现在有 2,第二个有 1,依此类推。因此,在添加新的 waldform 之后,在附加提交事件之前,删除任何先前的提交处理程序

$('.waldform').off();

应该解决你的问题。

您可能想查看有关 unbind() 和 off() 的文档。

另一种解决方法是创建一个新的 dom 元素,将提交绑定到它,然后将其附加到正文,而不是绑定到整个类。

于 2013-10-25T23:31:27.530 回答