2011-09-20 107 views
1

我在頁面的頁腳處有一個超鏈接,它在jQuery對話框中打開一個表單,我們將其稱爲M1.Thani輸入所有信息,然後單擊「創建「它創建一個用戶。當創建一個新的用戶我顯示小模式(「我們稱之爲M2」)說:「請稍等..一些消息」無法一次又一次打開Jquery模式對話框

現在我的問題是iam無法顯示(「M2」)模態說:「請等待..一些消息「,而我一直在創造一個新的用戶,每次當我留在(」M1「)。 第一次它來了(「M1」),並且下一次它不再顯示。關閉iam時如何破壞並刪除對話框。 (這是由於其他問題)

這裏是代碼。

<div id="m2" style="visibility:hidden"> 
    <img src="spinningwheel" border="0" align="middle" hspace="20" vspace="5"/> Creating USER... 
</div> 

$(document).ready(function() { 
    displaydialog();  
}); 

function displaydialog(){ 
    $('#m2').dialog({ 
     autoOpen: false, 
     height: 100, 
     width: 250, 
     modal: true, 
     close: function() { 
       $(this).dialog('destroy'); 
       $(this).remove();   
      } 
    }); 
} 

$("#btncreate").click(function(){ 
    $("#m2").removeAttr('style');   
    displaydialog(); 
    $("#m2").dialog('open'); 
    //get a json request based on data if suceess 
    if(success){ 
     $("#m2").dialog('close'); 
    }else{ 
     $("#m2").dialog('close'); 
    } 

}); 

回答

1

@Derby,

$(document).ready(function() { 
     displaydialog();  
    }); 

    function displaydialog(){ 
     $('#m2').dialog({ 
      autoOpen: false, 
      height: 100, 
      width: 250, 
      modal: true, 
/*   close: function() { // No need to Destroy the dialog 
        $(this).dialog('destroy'); 
        $(this).remove();   
       }*/ 
     }); 
    } 

    $("#btncreate").click(function(){ 
     // $("#m2").removeAttr('style');   
     // displaydialog(); 
     $("#m2").dialog('open'); 
     //get a json request based on data if suceess 
     // if you are using ajax post, try to close this box as part of response handler (success/error). 
jQuery.ajax({ 
      data : {somekey : somevalue}, 
      datatype: 'json', 
      error : function(jqXHR, textStatus, errorThrown) { 
       $("#m2").dialog('close'); 
      }, 
      success : function(data, textStatus, jqXHR) { 
       $("#m2").dialog('close'); 
      }, 
      type : 'GET', 
      url : 'dummyURL' 
     }); 
    /* if(success){ 
      $("#m2").dialog('close'); 
     }else{ 
      $("#m2").dialog('close'); 
     } */ 

    }); 

你不必破壞和創造M2對話框每次。只需在文檔準備好時調用displaydialog()一次,然後在對話框上使用open和close。您沒有看到對話框,因爲在調用您的ajax get請求後(如果您使用async:true),將調用dialog(close)。所以,從ajax請求成功/錯誤關閉M2對話框。

0

如果重新使用AJAX來獲取新的數據,瀏覽器將再次renderize網絡(不加載,renderize它),所以你不會有再DOM的準備。嘗試調用displaydialog然後打開它。它會工作。無論如何,有一個更好的方式來做到這一點,我認爲你的問題是邏輯。但是這個解決方案會起作用

相關問題