【发布时间】:2011-06-19 15:14:01
【问题描述】:
我正在尝试使用 jQuery UI 对话框进行某种“软”验证——如果表单看起来可疑,警告用户,但允许他们继续提交:
// multiple submit buttons...
var whichButton;
$("#myForm").find("[type=submit]").click(function()
{
whichButton = this;
}
var userOkWithIt = false;
$("#myForm").submit(function()
{
if (dataLooksFishy() && !userOkWithIt)
{
$("Are you sure you want to do this?").dialog(
{
buttons:
{
"Yes": function()
{
$(this).dialog("close");
// override check and resubmit form
userOkWithIt = true;
// save submit action on form
$("#myForm").append("<input type='hidden' name='" +
$(whichSubmit).attr("name") + "' value='" +
$(whichSubmit).val() + "'>");
$("#myForm").submit(); /****** Problem *********/
},
"No": function() { $(this).dialog("close"); }
}
});
return false; // always prevent form submission here
} // end data looks fishy
return true; // allow form submission
});
我已经用一堆调试警报语句检查了这一点。控制流正是我所期望的。如果我第一次失败 dataLooksFishy(),我会看到对话框并且该方法异步返回 false。
点击“yes”确实会重新触发这个方法,而这一次,该方法返回true,然而,表单实际上并没有提交......
我确定我在这里错过了更好的方法,但主要目标是能够使用异步 dialog() 模拟同步 confirm() 的行为。
【问题讨论】:
-
哎呀..打字错误:“whichButton”和“whichSubmit”变量名称应该彼此一致。那部分运行良好......
标签: jquery-ui dialog validation confirm