考虑以下脚本。验证脚本后,如果他们更改了电子邮件,我希望显示一个对话框,提示他们输入密码。如果密码签出,服务器将只更新数据库。
问题是它导致无限循环,因为对话框按钮提交了表单,而该表单又启动了对话框。我意识到如果$('#password')
不为空,我就不能触发对话框,但是,我的实际脚本更复杂,而且它会很好。"以某种方式提交表单并绕过jQuery验证submitHandler。
这可能吗?如果是这样,怎么样?
var validator=$("#main_form").validate({
rules: {},
messages: {},
submitHandler: function(form) {
if(emailedChanged) {
$("#dialog-password").dialog("open");
}
else {form.submit();}
}
});
$('#dialog-password').dialog({
buttons : [
{
text : 'SAVE',
click : function() {
$('#password').val($(this).find('input').val());
$('#main_form').submit();
}
},
{
text : 'CANCEL',
click : function() {$(this).dialog("close");}
}
]
});
答案 0 :(得分:0)
您可以捕获click事件并阻止它提交表单(从而阻止submitHandler触发)。然后在click事件的处理程序中,您可以添加所需的功能。
如果电子邮件尚未更改,只需触发表单的提交事件。
$("#hj").click(function (ev) {
ev.preventDefault();
if (emailedChanged) {
$("#dialog-password").dialog("open");
} else {
$("#main_form").submit();
}
});