为什么popup会在第二时间消失

时间:2015-09-15 08:01:30

标签: javascript

我创建了一个用户输入数据并单击“提交”按钮的表单(在PHP中)。 在这里,我点击了js弹出一个弹出窗口,然后点击“提交”#39;按钮。

Popup正确加载但在第二秒的一半时间内消失。

我哪里出错了? js如下:

var popupStatus = 0;

function loadPopup() {
    if (popupStatus == 0) {
        $("#backgroundPopup").css({
            "opacity": "0.7"
        });
        $("#backgroundPopup").fadeIn("slow");
        $("#popupContact").fadeIn("slow");
        popupStatus = 1;
    }
}

function disablePopup() {
    //disables popup only if it is enabled
    if (popupStatus == 1) {
        $("#backgroundPopup").fadeOut("slow");
        $("#popupContact").fadeOut("slow");
        popupStatus = 0;
    }
}

function centerPopup() {

    var windowWidth = document.documentElement.clientWidth;
    var windowHeight = document.documentElement.clientHeight;
    var popupHeight = $("#popupContact").height();
    var popupWidth = $("#popupContact").width();

    $("#popupContact").css({
        "position": "absolute",
        "top": windowHeight / 2 - popupHeight / 2,
        "left": windowWidth / 2 - popupWidth / 2
    });
    $("#backgroundPopup").css({
        "height": windowHeight
    });

}
$(document).ready(function() {
    $("#Submit").click(function() {
        //centering with css
        centerPopup();
        //load popup
        loadPopup();
    });


    $("#popupContactClose").click(function() {
        disablePopup();
    });

    $("#backgroundPopup").click(function() {
        disablePopup();
    });

    $(document).keypress(function(e) {
        if (e.keyCode == 27 && popupStatus == 1) {
            disablePopup();
        }
    });

});

上面的代码在HTML中运行良好,但它对PHP很疯狂。

请帮助

2 个答案:

答案 0 :(得分:0)

要处理此问题,您可以在提交按钮旁边创建一个额外的隐藏按钮,这将用于您的弹出式检查:

<!--Hide YOUR ORIGINAL Button-->  
<input type="submit" value="Submit" id="Submit" style="display:none">    
<input type="Submit" id="FakeSubmit" value="Submit">   

在你的javascript写入中,在FakeSubmit按钮事件中加载弹出窗口(此按钮不提交):

$("#FakeSubmit").click(function(){
    //centering with css
    centerPopup();
    //load popup
    loadPopup();
 });  

完成所有弹出式检查后,触发提交按钮自动提交表单:

 $("#Submit").click();

答案 1 :(得分:0)

理想情况下,您需要做的是阻止表单在单击“提交”按钮时提交,并在验证表单后提交表单。它应该有点类似于以下内容:

$("#Submit").click(function() {
        //centering with css
        centerPopup();
        //load popup
        loadPopup();

        // prevent form from submitting
        return false;
});

// validation function
$('#OKButton').click(function() {
     //form by id
     $('#myForm').submit();
});

希望这有帮助。