jquery对话框帖子被复制

时间:2011-07-25 19:43:00

标签: javascript jquery dialog

我第一次发帖,帖子提交的很好。然后我关闭对话框窗口并单击链接重新打开,当我再次提交数据时,它会复制它并添加两次。这种行为似乎每次都会继续添加duplidcte。例如,post1然后post1 + post1然后post1 + post1 + post1。我必须不断刷新浏览器才能发帖。希望你明白这个主意。如果有人可以检查我的代码,我将不胜感激。非常感谢

// Feedback form

function feedbacknew() {

    $("#fb_form").dialog({
        autoOpen: false,
        resizable: true,
        modal: true,
        title: 'Submit a feedback request',
        width: 480,
        beforeclose: function (event, ui) {
            $("#fb_message").html("");


        },
        close: function (event, ui) {
            $("#fb_message").html("");
            $("#feedback").get(0).reset();
            $("#fb_form").dialog('close');

        }

    });

    $('#fb_submit').live('click', function () {

        var name = $('#fb_uname').val();
        var client = $('#fb_client').val();
        var department = $('#fb_department').val();
        var email = $('#fb_email').val();
        var position = $('#fb_position').val();
        var feedback = $('#fb_feedbacknew').val();
        var data = 'fb_uname=' + name +
                   '&fb_client=' + client +
                   '&fb_department=' + department +
                   '&fb_email=' + email +
                   '&fb_position=' + position +
                   '&fb_feedbacknew=' + feedback;
        $.ajax({
            type: "POST",
            url: "feedback.php",
            data: data,
            success: function (data) {

                $("#feedback").get(0).reset();
                $('#fb_message').html(data);


                $("#flex1").flexReload();

            },
            error:function (xhr, ajaxOptions, thrownError){
                    alert(xhr.status);
                    alert(thrownError);
                }    
        });
        return false;

    });

    $("#fb_form").dialog('open');

}

3 个答案:

答案 0 :(得分:1)

我会在你的点击功能中添加一个提醒,看看它被调用了多少次。如果它被称为正确的次数,那么你没有正确清除你的一个元素,每个连续的调用都是附加数据而不是设置它。您至少可以通过这种方式缩小问题范围

答案 1 :(得分:0)

更改.live()方法。

如果您使用的是新版本的jquery,可以使用.on()。如果不直接使用.click()如下:

$('#fb_submit')。click(function(){....

答案 2 :(得分:0)

确保在关闭弹出窗口后销毁弹出窗口。 因为当弹出div时,它会从html中取出并附加到body的末尾。 在ajax调用之后,生成一个新的div来填充原始div的位置。 使用destroy可以将div放回原来的位置,并且不会生成新的div来填充原始div的位置。

破坏() 完全删除对话框功能。这将使元素返回到其初始化前状态。 此方法不接受任何参数。 代码示例: 调用destroy方法:

1 $(“。selector”)。dialog(“destroy”);