私は奇妙な問題を抱えています.私が間違っていることを見つけるのを手伝ってくれることを願っています.
「 popup」とボタン「send_mail 」という div があります。
「send_mail」ボタンを押すと、「popup」が表示され、ajax メールフォームと「close」ボタンが表示されます。
メールフォームに入力して送信すると、メッセージは私のメールアドレスに送信されます。
もちろん、この部分ではすべてが完璧に機能します。ここまでは順調ですね...
問題は、「ポップアップ」フォームを開き、「閉じる」ボタンを使用して閉じてから、フォームを再度開いてメールを送信することです。メールボックスに同じメールが 2 回届きます。
明らかに、ポップアップフォームを10回開いて閉じ、10回目にメールを送信すると、メールボックスに10通のメールが届きます...
これを修正してメールを 1 つだけ送信する唯一の方法は、ページ全体を更新することです。
それは何ですか?
これがjsコードです(混沌としたフォームで申し訳ありません):
一番最初の行は、メインの HTML ページに複数のボタンがあるため、どのボタンが押されたかを判断することです (ユーザーの数に応じて、各ユーザーには 1 つの「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
});
}