无法一次又一次地打开Jquery模态对话框

时间:2011-09-20 15:32:48

标签: jquery-ui jquery

我在页面的页脚上有一个超级链接,它在jquery对话框中打开一个表单,我们将其称为M1。然后我输入所有信息并单击“创建”以创建用户。在创建一个新用户时,我会显示一个小模态(“我们称之为M2”),说“请稍等......有些消息”

现在我的问题是,当我留在(“M1”)时每次保持创建新用户时,我无法显示(“等待......某些消息”)的“(M2”)模式。 第一次来它(“M1”)并且下次它不再显示。如何关闭iam销毁和删除对话框。 (这是由于其他问题)

这是Code。

<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');
    }   

 });

2 个答案:

答案 0 :(得分: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请求之后会调用dialog(close)(如果你使用的是async:true)。因此,从ajax请求中关闭成功/错误的M2对话框。

答案 1 :(得分:0)

如果您使用ajax来检索新数据,浏览器将再次重新定义网络(不加载,重新定位),这样您就不再有dom准备好了。尝试调用displaydialog然后打开它。它会工作。无论如何,有一个更好的方法,我认为你的问题是逻辑。但是这个解决方案可行。