我有一个JSf表单,我正在尝试使用jQuery Ui对话框插件提交表单。这是代码片段。
function confirmSubmit() {
$('#dialog').dialog('open');
return false;
}
$('#dialog').dialog({
autoOpen : false,
width : 400,
modal : true,
resizable : false,
buttons : {
"Submit Form" : function() {
document.myForm.submit();
},
"Cancel" : function() {
$(this).dialog("close");
}
}
});
<h:form id="myForm">
<h:commandLink action="#{Bean.search}" type="submit" onclick="return confirmSubmit()" id="search" styleClass="buttonSearch">
</h:commandLink>
对话框中的"document.myForm.submit();"部分不起作用,即没有调用到服务器,在服务器控制台中我看到错误:
11:45:32738严重[生命周期]JSF1054:(阶段ID:RENDER_RESONSE 6,视图ID:/PRT01/IMCM0101.jsp)阶段期间引发异常执行:javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@ec333b]
对话框显示正确,但一旦我按下提交按钮"document.myForm.submit();"代码就会执行,而表单没有提交,服务器控制台上就会出现上述错误。
当您return false;
时,它实际上不会提交。
使dialog
工作
$(document).ready(function() {
var $dialog = $('<div></div>')
.html('This dialog will show every time!')
.dialog({
autoOpen : false,
width : 400,
modal : true,
resizable : false,
buttons : {
"Submit Form" : function() {
document.myForm.submit();
},
"Cancel" : function() {
$(this).dialog("close");
}
}
});
});
然后打电话给
function confirmSubmit() {
$dialog.dialog('open');
return false;
}
完成后,缺少一些JSF参数。jsf在表单提交过程中添加的,我使用jQuery:添加了它们
$("a[id$='search']").click(function() {
var input = $("<input>").attr("type", "hidden").attr("name", "myForm:search").val("myForm:search");
$('#myForm').append($(input));
$("p#dialog-email").html(titleVar);
$('#dialog').dialog('open');
});