对话框关闭两次

Dialog closes twice

本文关键字:两次 对话框      更新时间:2023-09-26

代码如下:

var timer;
$('#phone_number').click(function(){
    $("#phone_dialog").dialog('open');
    timer = setTimeout(function(){ phone_close() },10000);
});
$('#phone_dialog').click(function(){
    clearTimeout(timer);
phone_close();
});
function phone_close(){
$('#phone_dialog').dialog('close');
}; 

思路是用户单击phone_number打开对话框。用户可以点击关闭对话框,但如果他没有这样做,它会在10秒后消失,通过setTimer()

在实践中发生的是,然而,clearTimeout(timer)似乎并没有停止定时器。用户可以在2秒后点击关闭。然后对话框[重新打开并]在第10秒关闭,尽管在点击功能中存在clearTimeout

你可以使用isOpen来检查对话框是否已经关闭

function phone_close(){
     if($("#phone_dialog").dialog( "isOpen" )
     {
          $('#phone_dialog').dialog('close');
     }
}; 

试着像这样改变第一个函数:

$('#phone_number').click(function(){
    $("#phone_dialog").dialog('open');
    clearTimeout(timer);
    timer = setTimeout(function(){ phone_close() },10000);
});