我发现this thread基本上和我有同样的问题。但他们的解决方案并不适合我。
第一次单击提交按钮时会出现对话框,但不是第二次出现。 我在表单提交后打开对话框。
更新
我终于开始工作了。这是正确的代码:
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。
答案 0 :(得分:4)
我认为RayLehman在您所引用的帖子中的高度投票答案是正确的解决方案。
jQuery UI的dialog()函数实际上是从某些内容创建一个对话框。你实际上并没有在任何地方的对话框上打开“打开”。
第一次通过调用dialog()创建对话框时,只需要调用dialog(“open”)或dialog(“close”),而不是每次都重新创建实际的对话框对象。 p>
答案 1 :(得分:1)
不要使用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");
};
答案 2 :(得分:0)
听起来你已经用init调用打开了你的开放事件。您需要确保首先初始化对话框 - 通常将autoOpen属性设置为false - 然后单独执行单击事件以打开对话框。
阅读this article以详细解释。