【问题标题】:JSF button with dialog is not rendered未呈现带有对话框的 JSF 按钮
【发布时间】:2012-11-01 19:59:35
【问题描述】:

我创建了这个带有问题对话框的 JSF 按钮示例:

<!-- hidden button -->
<h:commandButton id="deleterow" value="HiddenDelete"  action="#{AccountProfileTabGeneralController.saveData}" style="display:none" update="growl">
    <f:ajax render="@form" execute="@form"></f:ajax>
</h:commandButton>

<!-- edit button -->
<h:button style="position:absolute; bottom:12px; right:12%;" rendered="#{AccountProfileTabGeneralController.editable}" styleClass="lbimage" value=" Save Account " onclick="editdialog(this, 'Do you want to save the changes?'); return false;" />

我用这个JS来显示对话框:

function editdialog(button, a){      
    $("<div />", {
        text: a
    }).dialog({        
        width: 600,
        buttons: {
            "Ok": function() { 
                $("#form\\:deleterow").click();
                $(this).dialog("close");
                button.value = "Processing...";
                button.disabled = true;                  
            }, 
            "Cancel": function(event) { 
                $(this).dialog("close");
                event.preventDefault();
                button.value = "Save Account";
                button.disabled = false;
            } 
        }
    });         
}

但是由于某种原因,然后我单击“确定”按钮,该按钮被禁用并且无法正常工作,也许表单的 ID 不正确。我用这个&lt;h:form id="general"&gt;

我该如何解决这个问题?以及如何在具有不同 id 的表单中使用代码?

【问题讨论】:

    标签: javascript jquery jsf jsf-2


    【解决方案1】:

    如果表单的 id 为“general”,则 jQuery 选择器应该是

    $("#general\\:deleterow")
    

    但正如您所指出的,您可能有不同的形式,因此选择器非常具体。

    我想你会想要这样的东西:

    $(button).closest("form").find("[id$=deleterow]").click();
    

    它的作用是找到启动editDialog 函数的按钮的第一个父form 元素,然后在该表单内找到任何以“deleterow”结尾的id 元素。这应该可行,因为该元素的id 将类似于“form_id:deleterow”。

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 2023-04-06
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多