对话关闭两次

时间:2014-06-05 03:28:05

标签: javascript jquery

以下是代码:

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秒后点击关闭。尽管点击功能中存在clearTimeout,但对话框[重新打开并]在第10秒关闭。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试更改第一个功能:

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