2011-09-20 82 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然后打开它。它会工作。无论如何,有一个更好的方式来做到这一点,我认为你的问题是逻辑。但是这个解决方案会起作用

相关问题