Javascript 提交表单后,弹出窗口会自动关闭

Javascript 提交表单后,弹出窗口会自动关闭,javascript,php,forms,html,popup,Javascript,Php,Forms,Html,Popup,当我试图找到解决问题的方法时,我只会遇到与我问题相反的人 我正在加载一个带有javascript的弹出div。在div中,我运行一个PHP表单。 我的问题是,每当我提交表单时,我的弹出div就会自动关闭。我希望在提交后,当PHP echo显示在弹出div中时,弹出窗口保持可见 我对javascript和PHP都很陌生,虽然我试图找出哪里出了问题(我假设问题出在我的javascript中),但我似乎无法找出哪里出了问题 这是我的Javascript,来自istockphp.com jQuery(f

当我试图找到解决问题的方法时,我只会遇到与我问题相反的人

我正在加载一个带有javascript的弹出div。在div中,我运行一个PHP表单。 我的问题是,每当我提交表单时,我的弹出div就会自动关闭。我希望在提交后,当PHP echo显示在弹出div中时,弹出窗口保持可见

我对javascript和PHP都很陌生,虽然我试图找出哪里出了问题(我假设问题出在我的javascript中),但我似乎无法找出哪里出了问题

这是我的Javascript,来自istockphp.com

jQuery(function($) {

$("a.topopup").click(function() {
        loading(); // loading
        setTimeout(function(){ // then show popup, deley in .5 second
            loadPopup(); // function show popup
        }, 500); // .5 second
return false;
});

/* event for close the popup */
$("div.close").hover(
                function() {
                    $('span.ecs_tooltip').show();
                },
                function () {
                    $('span.ecs_tooltip').hide();
                }
            );

$("div.close").click(function() {
    disablePopup();  // function close pop up
});

$(this).keyup(function(event) {
    if (event.which == 27) { // 27 is 'Ecs' in the keyboard
        disablePopup();  // function close pop up
    }
});

$("div#backgroundPopup").click(function() {
    disablePopup();  // function close pop up
});

$('a.livebox').click(function() {
    alert('Hello World!');
return false;
});

 /************** start: functions. **************/
function loading() {
    $("div.loader").show();
}
function closeloading() {
    $("div.loader").fadeOut('normal');
}

var popupStatus = 0; // set value

function loadPopup() {
    if(popupStatus == 0) { // if value is 0, show popup
        closeloading(); // fadeout loading
        $("#toPopup").fadeIn(0500); // fadein popup div
        $("#backgroundPopup").css("opacity", "0.7"); // css opacity, supports IE7, IE8
        $("#backgroundPopup").fadeIn(0001);
        popupStatus = 1; // and set value to 1
        actionResponse.setWindowState(LiferayWindowState.EXCLUSIVE);
    }
}

function disablePopup() {
    if(popupStatus == 1) { // if value is 1, close popup
        $("#toPopup").fadeOut("normal");
        $("#backgroundPopup").fadeOut("normal");
        popupStatus = 0;  // and set value to 0
    }
}
/************** end: functions. **************/
}); // jQuery End
这是我的PHP:

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Contactformulier'; 
$to = 'info@mywebsite.nl'; 
$subject = $_POST['subject'];
$human = $_POST['human'];

$body = "Afzender:\n $name\n\n E-Mail:\n $email\n\n Onderwerp:\n $subject\n\n Bericht:\n $message";

if ($_POST['submit']) {
    if ($name != '' && $email != '') {
        if ($human == '4') {                 
            if (mail ($to, $subject, $body, $from)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
            } 
    } else if ($_POST['submit'] && $human != '4') {
        echo '<p>You answered the anti-spam question incorrectly!</p>';
    }
    } else {
        echo '<p>You need to fill in all required fields!!</p>';
    }
}
$name=$\u POST['name'];
$email=$_POST['email'];
$message=$_POST['message'];
$from='from:Contactformulier';
$to$info@mywebsite.nl'; 
$subject=$_POST['subject'];
$human=$_POST['human'];
$body=“Afzender:\n$name\n\n电子邮件:\n$email\n\n OnderERP:\n$subject\n\n Bericht:\n$message”;
如果($_POST['submit'])){
如果($name!=''&&$email!=''){
如果($human=='4'){
如果(邮件($to,$subject,$body,$from)){
回显“您的邮件已发送!

”; }否则{ echo“出现问题,请返回并重试!

”; } }否则如果($_POST['submit']&&$human!='4'){ echo“您错误地回答了反垃圾邮件问题!

”; } }否则{ echo“您需要填写所有必填字段!!

”; } }
页面是否重新加载并因此关闭弹出窗口?如果是这样,您需要防止表单的“提交”按钮的默认行为。

表单提交时,页面将重新加载。您基本上有两个选项来防止弹出窗口消失

Jay Kravetz建议的一个选项是防止默认表单提交,并将其转化为Ajax请求。您需要提交到“test2.php”:

除了CSS,您还可以在jQuery函数的底部添加以下内容:

if ($('.showImmediately').length > 0) {
    loading(); // loading
    setTimeout(function(){ // then show popup, deley in .5 second
        loadPopup(); // function show popup
    }, 500); // .5 second
}

你能展示一下你用来提交表单的代码吗?它不会重新加载。当我提交表单并重新打开弹出窗口时,PHP echo正是我想要的位置;由于表单提交,弹出div关闭。有没有关于如何禁用该功能的想法?我一直在寻找解决方案,但似乎找不到任何有效的(或我能理解的;)
if ($_POST['submit']) {
  echo '<div id="popup_content" class="showImmediately">';
  //other logic here
} else {
  echo '<div id="popup_content">';
}
.showImmediately { display: block !important; }
if ($('.showImmediately').length > 0) {
    loading(); // loading
    setTimeout(function(){ // then show popup, deley in .5 second
        loadPopup(); // function show popup
    }, 500); // .5 second
}