jQuery对话框没有第二次打开

时间:2009-09-23 21:28:24

标签: jquery dialog

我发现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。

3 个答案:

答案 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以详细解释。