我第一次发帖,帖子提交的很好。然后我关闭对话框窗口并单击链接重新打开,当我再次提交数据时,它会复制它并添加两次。这种行为似乎每次都会继续添加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');
}
答案 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”);