暂停页面执行直到jQuery警报关闭,然后运行函数

时间:2013-01-15 05:30:12

标签: javascript jquery

我有一个jQuery $.alert和一个.fadeOut(1000)连续工作,但我不喜欢我看到的结果。我想在用户关闭.fadeOut(1000)后才运行$.alert。我知道你实际上无法捕获警报的紧急事件,但是有人可以建议一个可能完成我正在寻找的解决方案吗?

以下是我正在尝试实施更改的现有ajax来电:

$.ajax({
url: sURL + "utility/mymethod",
type: "POST",
data: {ClientNum: ClientNum},
dataType: 'json',
success: function(json) {       
if (typeof(json.ClientEmail) != "undefined" && json.ClientEmail !== null && json.ClientEmail !== "") {
    $.confirm("Please call . . . .",                
    function(){ 
        if (json.ClientEmail){
            send_email(json);
        }
    },              
    function(){
        $.msg("Password recovery information has NOT been sent.",
        {header:'Password Not Sent', live:10000});
        $('#ajaxShield').fadeOut(1000);
    })
} else {
    //THIS IS WHERE I WANT THE FADEOUT TO WAIT FOR THE ALERT
    $.alert("There is no email address.")
    $('#ajaxShield').fadeOut(1000);
}; 
}, 
error:function (xhr, ajaxOptions, thrownError){ alert('Problem, Status code:'+xhr.status+', Error:'+thrownError);} 
});

我希望我的叠加层保持可见,直到用户确认警报消息。

感谢。

1 个答案:

答案 0 :(得分:2)

$。alert不是本机JQuery,因此可能是一个异步操作的插件。谷歌搜索表明,它不是众所周知的。

简单测试......

更改

$.alert("msg")

alert("msg")

这看起来像你所追求的(警报同步工作)。

如果这更像您所追求的,下一阶段是确定您的插件的工作方式(如果您想继续使用它)