【问题标题】:Refreshing Jquery dialog content + JSF刷新 Jquery 对话框内容 + JSF
【发布时间】:2013-03-29 07:04:42
【问题描述】:

我需要显示一个记录表,每行都有一个锚标记,单击该标记将打开一个 Jquery 对话框。当我单击每一行的链接时,对话框会成功打开(目前,我有两行并且已经硬编码了我需要使它们动态化的锚和 div 标签的 ID)。无论如何,一旦对话框打开,我可以选择取消选中并选中某些复选框并进行一些更新。更新应该反映在父窗口上,这很好。但是,当我再次打开对话框时,它会在进行更新之前打开初始数据,而不是显示使用所做更新刷新的对话框。此外,它开始抛出错误消息,说“在初始化之前无法调用对话框上的方法;试图调用方法'close'"

  $("#vendoradmin-artnodesearch-popup-0").dialog(opt).dialog("open");});

 $("#vendoradmin-artnodesearch-popup-0").dialog(
               {
                autoOpen : false,
                modal : false,
                resizable : false,
                height : 500,
                width : 750,
                buttons : [{
                text: "Submit", 
                click : function() {
                    var selNodes = "";
                  $('#artNodeAvailListId-0 input:checkbox:checked').each(
                     function() {
                        selNodes += $(this).val() + ",";
                      });


                  $("#frmAssignArticleHierarchy\\:hdnArticleNodeIds").attr("value",
                  selNodes);
                     frmAssignArticleHierarchy["frmAssignArticleHierarchy:btnRefreshArticleFilter"]
                 .click();

                  $(this).dialog("close");
                 }
             }]
         });
       };

对此的任何帮助将不胜感激。

【问题讨论】:

  • 你试过了吗 dialog("destroy");查看文档:api.jqueryui.com/dialog
  • 我确实尝试调用 $(this).dialog("destroy");在关闭对话框之前。它似乎不起作用。此外,添加了 close:function(ev, ui) { alert('inside close'); $(this).dialog("destroy");当我更新对话框后第二次打开时,对话框本身没有打开并显示错误消息“无法在初始化之前调用对话框上的方法;尝试调用方法‘关闭’”
  • 我记得使用 jquery 即时创建 div。关闭后,我使用了销毁和删除。 ` $("#dialogwrapper").dialog("destroy"); $("#dialogwrapper").remove(); ` 我看不到你的情况,但试试看。
  • 没有丹尼尔..它似乎不起作用。

标签: jquery jsf html dialog refresh


【解决方案1】:

$("#vendoradmin-artnodesearch-popup-0") 是您即时创建的元素吗? 您是否封装了对话框 ID。你可以使用 .ui-dialog 作为前面的选择器吗?这些 id 是唯一的吗?

  click: function () {
     var selNodes = "";
     $('.ui-dialog #artNodeAvailListId-0 input:checkbox:checked').each(

     function () {
         selNodes += $(this).val() + ",";
     });


     $("#frmAssignArticleHierarchy\\:hdnArticleNodeIds").attr("value",
     selNodes);


     $(this).dialog("close");

不知何故,我认为您的 id 可能有冲突。

【讨论】:

  • 我用下面的方法来得到这个工作 $('#vendorDtl').on('click', 'a.className', function(){ var opt = { autoOpen : false, modal : false, resizable : false, height : 500, width : 750, buttons : { "Submit" : function() { //.....app 特定代码 $(this).dialog("close"); }}} ; $("#popup-"+rowNumber).dialog(opt).dialog("open");});我能够解决“在对话框初始化之前调用方法打开时出错”,还可以通过识别动态生成并单击的锚标记来解决。
【解决方案2】:

问题是当你关闭对话框时,实际上它并没有删除对话框中的数据,所以当它再次显示时,它会显示已经存在的数据,所以你需要添加一个关闭选项来删除@ 987654321@内容,查看jquery dialog的api即可找到相关代码。

$("#vendoradmin-artnodesearch-popup-0").dialog(
               {
                autoOpen : false,
                modal : false,
                resizable : false,
                height : 500,
                width : 750,
close: function(){//add code to remove the data in vendoradmin-artnodesearch-popup-0}
                buttons : [{
                text: "Submit", 

                click : function() {
                    var selNodes = "";
                  $('#artNodeAvailListId-0 input:checkbox:checked').each(
                     function() {
                        selNodes += $(this).val() + ",";
                      });


                  $("#frmAssignArticleHierarchy\\:hdnArticleNodeIds").attr("value",
                  selNodes);
                     frmAssignArticleHierarchy["frmAssignArticleHierarchy:btnRefreshArticleFilter"]
                 .click();

                  $(this).dialog("close");
                 }
             }]
         });
       };

【讨论】:

  • 感谢朋友的回复。但是,它不起作用.. close:function(ev, ui) { alert('inside close'); $(this).dialog("destroy"); }
  • 不是这样的。您应该删除 vendoradmin-artnodesearch-popup-0 中的内容,而不仅仅是销毁它。
猜你喜欢
  • 2011-04-13
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
相关资源
最近更新 更多