2011-05-11 90 views
1

我有一個名爲提交按鈕,當我點擊這個按鈕,我有一個確認框。如果我點擊確認框上的確定按鈕,我有一個對話框。但是,如果我取消這個對話框,並嘗試再次這樣做,我無法看到對話框。第二次單擊確認框確定按鈕時不顯示對話框?

HTML看起來像這樣

 <input type="submit" id="btnSubmit" class="button" value="<%= OsflAdminResources.Text_Users_Permanently_Delete_Selected_Users %>" 
      onclick="return validate();" /> 

jQuery是: -

function validate() 
     { 
       if(confirm("<%= OsflAdminResources.Text_Delete_Warning_Popup_Message %>")) 
       { 
        dialog(); 
        return false; 
       } 
       else 
       { 
       return false; 
       } 
     } 


    function dialog() 
    { 
      $("#dialogToShow").dialog({ 
         title: "Confirm Password", 
         closeText: "Cancel", 
         show:"slide", 
         resizable: false, 
         modal: true, 
          open: function(ev, ui){ 
          $('.ui-widget-overlay').stop().animate({"opacity": "0.40"}, 1480); 
          }, 
          close: function(ev, ui){ 
          $('.ui-widget-overlay').stop().animate({"opacity": "0"}, 1480); 
          }     
          });      
      return false; 
    } 

任何機構可以幫我解決這個?

回答

5

問題是,您嘗試第二次重新初始化對話框。這不可能。將對話框分配給一個變量並使用該引用打開對話框。另外一定要設置autoOpen: false

嘗試以下操作:

var $dialog = null; 
function dialog() 
{ 
    // create dialog if not done already 
    if (!$dialog) { 
     $dialog = $("#dialogToShow").dialog({ 
      title: "Confirm Password", 
      closeText: "Cancel", 
      show:"slide", 
      resizable: false, 
      modal: true, 
      autoOpen: false, // this is important! prevent auto open 
      open: function(ev, ui){ 
       $('.ui-widget-overlay').stop().animate({"opacity": "0.40"}, 1480); 
      }, 
      close: function(ev, ui){ 
       $('.ui-widget-overlay').stop().animate({"opacity": "0"}, 1480); 
      }     
     }); 
    } 
    // use the reference to the dialog and call open. 
    $dialog.dialog('open'); 
    return false; 
} 
+0

這似乎是一個很好的解決方案。剛刪除我的答案,這是多餘的。 – PJP 2011-05-11 09:47:35

+0

感謝隊友,它真的有用,很棒的工作 – 2011-05-11 10:23:11

2

添加$( '#dialogToShow')對話框( '開放');在返回false之前;聲明你的功能一樣,

function dialog() 
    { 
      $("#dialogToShow").dialog({ 
         title: "Confirm Password", 
         closeText: "Cancel", 
         show:"slide", 
         resizable: false, 
         modal: true, 
          open: function(ev, ui){ 
          $('.ui-widget-overlay').stop().animate({"opacity": "0.40"}, 1480); 
          }, 
          close: function(ev, ui){ 
          $('.ui-widget-overlay').stop().animate({"opacity": "0"}, 1480); 
          }     
          }); 
      $('#dialogToShow').dialog('open');     
      return false; 
    } 
1

沒有錯,上述問題的答案,這裏是一個選擇,如果你有相同的頁面

$(function(){ 
    $('a.choice-edit-link').click(function(){ 
     $dis = $(this); 
     if (typeof $dis.data('dialogEl') == "undefined"){ 
      var dialogEl= $dis.siblings('div.choice-options').dialog({'modal':true}); 
      $dis.data('dialogEl',dialogEl); 
     } 
     else { 
      $dis.data('dialogEl').dialog('open'); 
     } 
    }); 
}); 

它使用。數據上產生的對話框多個元素()jQuery的功能設置和檢索對話框元素,類似於上面的例子,如果它不存在則創建它,或者如果它存在,則創建它。