【问题标题】:jQuery dialog box not opening 2nd timejQuery 对话框没有第二次打开
【发布时间】:2009-09-23 21:28:23
【问题描述】:

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

【问题讨论】:

    标签: jquery dialog


    【解决方案1】:

    我认为 RayLehman 在您引用的帖子中的高票回答是正确的解决方案。

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

    一旦第一次调用dialog()创建了对话框,你只需要调用dialog("open")或dialog("close"),而不是每次都重新创建实际的对话框对象。

    【讨论】:

    • Womp 是对的,你必须在每次需要时特意打开对话框。
    • 我现在正在用我修改后的代码来做这件事。我现在缺少的只是根据反馈类型添加正确的类。
    【解决方案2】:

    不要同时使用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");
    };
    

    【讨论】:

    • dialog.attr('class', feedback.type) 将覆盖默认类。我需要添加一个类。以及如何打开对话框?
    • 糟糕!已编辑。 (attr() -> addClass(), 添加打开)
    • 好的,谢谢。我仍然得到与上面更新的代码相同的结果。而且我仍然有同样的问题 - 添加的类的 css 没有呈现。
    • 这几乎可以工作。 css 类必须应用于父 div。查看我的解决方案。
    • 我接受你的答案是正确的,因为你给我提供了示例代码:)
    【解决方案3】:

    这听起来就像你已经用 init 调用包装了你的 open 事件。您需要确保首先初始化您的对话框 - 通常将 autoOpen 属性设置为 false - 然后有一个单独的单击事件来打开您的对话框。

    阅读this article详细解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      相关资源
      最近更新 更多