2012-11-14 119 views
0

我想創建一個jQuery對話框確認框,它出現。在下面的情況下,當我點擊「點擊確認框」時,應該出現對話框。當用戶選擇確定或取消時,這應該消失,並將關於按下哪個按鈕的信息傳遞給調用函數。jQuery的對話框確認對話框:請當用戶點擊一個元素

我已經基本上覆制粘貼下面的代碼從下面的變化單獨的解決方案:我叫myConfirm從另一個函數內部 - 一個叫時「點擊..」點擊。我不僅希望在加載頁面時顯示對話框(這似乎是我見過的大多數示例的情況)。結果是該對話框完全不出現。另外,如果我直接在腳本中調用myConfirm,那麼當我按下按鈕時它不會關閉。我嘗試過 「親密」,而不是 「消滅」

HTML

<head> 
    <meta charset="utf-8" /> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" /> 
    <script src="http://code.jquery.com/jquery-1.8.2.js"></script> 
    <script src="/resources/demos/external/jquery.bgiframe-2.1.2.js"></script> 
    <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css" /> 
</head> 

<a id = "confirm"> click for confirm box</div> 

腳本

<script> 
function myConfirm(dialogText, okFunc, cancelFunc, dialogTitle) { 
     $('<div style="padding: 10px; max-width: 500px; word-wrap: break-word;">' + dialogText + '</div>').dialog({ 
      draggable: false, 
      modal: true, 
      resizable: false, 
      width: 'auto', 
      title: dialogTitle || 'Confirm', 
      minHeight: 75, 
      buttons: { 
       OK: function() { 
        if (typeof (okFunc) == 'function') { setTimeout(okFunc, 50); } 
        $(this).dialog('destroy'); 
       }, 
       Cancel: function() { 
        if (typeof (cancelFunc) == 'function') { setTimeout(cancelFunc, 50); } 
        $(this).dialog('destroy'); 
       } 
      } 
     }); 
} 

$('[id=confirm]').click(function() { 
myConfirm('Do you want to delete this record ?', 
      function() { 
       alert('You clicked OK'); 
      }, 
     function() { 
      alert('You clicked Cancel'); 
     }, 
     'Confirm Delete' 
); 

}); 
</script> 
+0

使用的onclick功能,從功能和onlicking該功能通過ID只是提醒你要顯示 –

回答

0

原來,它並沒有因爲另一個腳本,其中包含了一箇舊的js源這一行工作:

<script src="http://code.jquery.com/jquery-1.4.4.js"></script> 

刪除該行使得無論另一件事和對話框工作。

此外,我遵循curtisk的建議,這很好,但還不足以解決問題。

+0

其實這是一月什麼,我只是修改他們的回答稍... – curtisk

1

我曾嘗試你的代碼jsfiddle.net並能正常工作。

你的錯誤是,你附加事件處理程序,而該文件仍在加載。 您必須等待文檔通過使用ready()事件準備就緒。

$(document).ready(function() { 
    $('#confirm').click(function() { ... 
}); 

另一件事:爲什麼執行okFunc和cancelFunc當你啓動一個定時器

此外,您可以通過使用#選擇按ID選擇你的元素簡化一點? 這應該沒有setTimeout的工作:

OK: function() { 
        $(this).dialog('close'); 
        if (typeof (okFunc) == 'function') { okFunc(); } 
       },