我用问题对话框创建了这个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不正确。我用这个<h:form id="general">
我如何解决问题?还有我如何在不同身份的表单中使用代码?
答案 0 :(得分:2)
如果表单的id为“general”,则jQuery选择器应该是
$("#general\\:deleterow")
但正如您所指出的,您可能有不同的形式,因此选择器非常具体。
我认为你想要的东西是:
$(button).closest("form").find("[id$=deleterow]").click();
这样做是找到启动form
函数的按钮的第一个父editDialog
元素,然后找到该表单中包含以id
结尾的任何元素deleterow”。这应该有效,因为该元素的id
将类似于“form_id:deleterow”。