提交表单并绕过jQuery验证submitHandler

时间:2015-01-04 17:47:12

标签: javascript jquery forms jquery-validate

考虑以下脚本。验证脚本后,如果他们更改了电子邮件,我希望显示一个对话框,提示他们输入密码。如果密码签出,服务器将只更新数据库。

问题是它导致无限循环,因为对话框按钮提交了表单,而该表单又启动了对话框。我意识到如果$('#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");}
        }
    ]    
});

1 个答案:

答案 0 :(得分:0)

您可以捕获click事件并阻止它提交表单(从而阻止submitHandler触发)。然后在click事件的处理程序中,您可以添加所需的功能。

  • 检查电子邮件是否已更改,如果是,则显示对话框,如果单击保存按钮,则会显示该表单。
  • 如果电子邮件尚未更改,只需触发表单的提交事件。

    $("#hj").click(function (ev) {
       ev.preventDefault();
       if (emailedChanged) {
          $("#dialog-password").dialog("open");
       } else {
          $("#main_form").submit();
       }
    });
    

fiddle