我有一个奇怪的问题,我希望你能帮助我找出我做错了什么。
我有一个名为“ popup ”的 div 和按钮“ send_mail ”。
当按下“ send_mail ”按钮时,“ popup ”会显示 ajax 邮件表单和“ close ”按钮。
当我填写并发送邮件表格时,邮件将发送到我的电子邮件地址。
当然,在这一部分,一切都完美无缺。到目前为止,一切都很好...
问题是当我打开“弹出”表单时,使用“关闭”按钮将其关闭,然后再次重新打开表单并发送邮件。发生的情况是我在邮箱中收到了两次相同的邮件。
显然,当我打开和关闭弹出表单 10 次并且在第 10 次发送电子邮件时,我的邮箱中收到了 10 封邮件......
我可以解决这个问题并只发送一封邮件的唯一方法是刷新整个页面。
那可能是什么?
这是js代码(对于混乱的形式我很抱歉):
第一行是确定按下哪个按钮,因为主 html 页面中有多个按钮(取决于用户数量,每个用户都有一个“send_mail_X”按钮)。
$("#list_container").on('click', "[id^='send_mail']", function () {
var val = $(this).attr("value");
$.ajax({
type: "POST",
url: "include/list_class.php",
data: val,
success: function(data){
$("#Popup").on('click', "#close", function () {
disablePopup();
});
$("#Popup").on('submit', "#admin_mail", function () {
var sendbutton = $(this).find('#sendmail');
var action = "include/admin_contact.php";
sendbutton.attr('disabled','disabled');
$.post(action, {
email: $("#Popup").find('#email').val(),
title: $("#Popup").find('#title').val(),
message: $("#Popup").find('#message').val()
},
function(data){
document.getElementById('admin-form_output').innerHTML = data;
centerPopup();
}
);
return false;
});
var array = data.split('#');
var mymail = array[0];
var myaddress = array[1];
var isdisabled = "";
if(mymail == ""){
mymail = "Nie można wyslać maila.<br>Brak ardesu email.";
isdisabled = "disabled='disabled'";
}
if(myaddress == ""){
myaddress = "Uzytkownik nie podał swojego adresu.<br>Zaznacz jego zamowienie na czerwono.";
}
$("#bgPopup").data("state",0);
loadPopup();
$("#Popup").on('click', "#popupClose", function () {
disablePopup();
return false;
});
$("#Popup").html("<a href='#' id='popupClose'><img src='images/close.png'></img></a> <div class='large-notice'><div id='admin-form_output'></div><br /><h4>ADRES WYSYLKOWY:</h4>" + myaddress + "<br /><br /><br /><h4>KONTAKT MAIL:</h4><div id='admin-form'><div class='field' style='display: block;'><form name='admin_mail' id='admin_mail' method='post' action='include/admin_contact.php' ><input type='hidden' name='email' id='email' value='" + mymail + "'/> <input type='text' name='title' id='title' onFocus='if(this.value == \"Tytul wiadomosci\") { this.value = \"\"; }' onBlur='if(this.value == \"\") { this.value = \"Tytul wiadomosci\"; }' value='Tytul wiadomosci' /> <textarea name='message' cols='190' rows='6' id='message' onFocus='if(this.value == \"Wiadomosc\") { this.value = \"\"; }' onBlur='if(this.value == \"\") { this.value = \"Wiadomosc\"; }' value='Wiadomosc'>Wiadomosc</textarea><div class='button'> <br /><input type='submit' class='btn-image' id='sendmail' " + isdisabled + " value='Wyslij' /></div><div class='button'> <br /><input type='button' class='btn-image' id='close' value='Zamknij' /></div></form></div></div><br /><br /><br />" + mymail + "</div>");
centerPopup();
}
});
return false;
});
function loadPopup(){
//loads popup only if it is disabled
if($("#bgPopup").data("state")==0){
$("#bgPopup").css({
"opacity": "0.7"
});
$("#bgPopup").fadeIn("medium");
$("#Popup").fadeIn("medium");
$("#bgPopup").data("state",1);
}
}
function disablePopup(){
$("#Popup").empty();
if ($("#bgPopup").data("state")==1){
$("#bgPopup").fadeOut("medium");
$("#Popup").fadeOut("medium");
$("#bgPopup").data("state",0);
}
}
function centerPopup(){
var winw = $(window).width();
var winh = $(window).height();
var popw = $('#Popup').width();
var poph = $('#Popup').height();
$("#Popup").css({
"position" : "fixed",
"top" : winh/2-poph/2,
"left" : winw/2-popw/2
});
//IE6
$("#bgPopup").css({
"height": winh
});
}