2012-08-30 31 views
1

如何在本示例中使用Jquery單擊「取消」按鈕時調用一個函數並讓 對話框繼續回來? 我相信這很容易,但仍然在這裏學習一些基礎知識。 感謝如何在本例中用Jquery調用函數?

function definitelyClose() { 
    window.location = 'http://www.google.com' 
}; 
var autoCloseTimer; 
var timeoutObject; 
var timePeriod = 5000; 
var warnPeriod = 10000; 
$(document).ready(function() { 
    $('#proba').dialog({ 
     autoOpen: false 
    }); 
    setTimeout(function() { 
     $('#proba').attr('title', 'Warning').text('Sesion will expire').dialog('open'); 
     $('#proba').dialog({ 
      buttons: { 
       'Cancel': function() { 
        $(this).dialog('close'); 
        clearTimeout(autoCloseTimer); 
       } 
      } 
     }); 
     autoCloseTimer = setTimeout('definitelyClose()', warnPeriod); 
    }, timePeriod); 
});​ 
+0

沒人能幫忙嗎? – Immigrant

+0

你的Javascript控制檯中有任何錯誤嗎? –

+0

完全沒有錯誤。代碼正在運行,但我無法讓它重新運行? clearTimeout函數似乎不能完成這項工作! – Immigrant

回答

1

你需要使用一個名稱創建功能

  1. 顯示最初的警告和
  2. 當按鈕被點擊了取消呼叫。

所以,你會得到這樣的:

$(document).ready(function() { 
    var autoCloseTimer; 
    var timePeriod = 5000; 
    var warnPeriod = 10000; 

    function definitelyClose() { 
    window.location = 'http://www.google.com' 
    }; 

    // You need a function with a name 
    function showWarning() { 
    $('#proba').attr('title', 'Warning') 
       .text('Sesion will expire') 
       .dialog('open'); 
    $('#proba').dialog({ 
     buttons: { 
     'Cancel': function() { 
      $(this).dialog('close'); 
      clearTimeout(autoCloseTimer); 
      // Now you can recall the function 
      setTimeout(showWarning, timePeriod); 
     } 
     } 
    }); 
    autoCloseTimer = setTimeout(definitelyClose, warnPeriod); 
    } 

    $('#proba').dialog({ autoOpen: false }); 
    setTimeout(showWarning, timePeriod); 
});​ 
+0

就是這樣。效果很好。我將不得不做更多的編碼才能真正掌握它。謝謝你的幫助! – Immigrant

+0

最後,我想我必須做循環才能回想起這個函數。我想用循環會工作,但它會使它更加複雜,不必要的! – Immigrant