jQuery对话框没有打开第二次

我发现这个post基本上和我有同样的问题。 但他们的解决方案对我不起作用。

第一次单击提交按钮时会出现对话框,但不是第二次出现。 我在表单提交后打开对话框。

UPDATE

我终于搞定了。 这是正确的代码:

if (jQuery('#registrationforms').length > 0) { //instantiate the dialog jQuery("#dialog").dialog({ modal:true, autoOpen:false }); //Some more code here to call processRegistration function. } function processRegistration(instanceID, formData) { jQuery.post("mypath/jquery_bll.php", { instance: 'processRegistration', formData : formData, instanceID : instanceID }, function(feedback) { jQuery('#dialog').text(feedback.message); jQuery('#dialog').parent().addClass(feedback.type); jQuery('#dialog').dialog('open'); },"json"); } 

因为我正在动态地应用css类,所以我必须确保将它添加到$ .dialog创建的外部DIV以包装我的’对话’DIV。

不要使用dialog()来初始化对话框并同时打开它。 我也犯了这个错误。

首先初始化对话框,然后在回调中打开它,如下所示:

 jQuery('#dialog').dialog({ autoOpen: false }); function processRegistration(instanceID, formData) { jQuery.post(..., function(feedback) { var dialog = jQuery('#dialog'); dialog.text(feedback.message); dialog.addClass(feedback.type); dialog.dialog('open'); }, "json"); }; 

我认为RayLehman在您所引用的post中的高度投票答案是正确的解决方案。

jQuery UI的dialog()函数实际上是从某些内容创建一个对话框。 你实际上并没有在对话框的任何地方调用“打开”。

通过第一次调用dialog()创建对话框时,只需要调用dialog(“open”)或dialog(“close”),而不是每次都重新创建实际的对话框对象。

这听起来像是你用init调用打开了你的开放事件。 您需要确保首先初始化对话框 – 通常将autoOpen属性设置为false – 然后单独执行单击事件以打开对话框。

阅读本文以详细解释它。