JQuery验证插件提交时不应该提交

时间:2015-02-04 18:26:23

标签: jquery jquery-validate

如果电子邮件无效,密码不符合最低要求或密码和确认密码字段不匹配,我打算通过打印邮件来验证我的表单。

要验证插件是否正常工作,我只测试电子邮件的有效性。在提交表单之前,验证器似乎工作了一秒钟,无论表单是否有效,我似乎无法弄清楚原因。

此外,该电子邮件无效'消息未打印出来。

我一直在努力想出这个问题已经有一段时间了,我很欣赏任何建议。

提前致谢!

JavaScript的:

$('#signUpForm').validate({ // initialize the plugin
    errorPlacement: function(error, element) {},
    rules: {
        email: {
            required: true,
            email: true
        }
    }
});

$('#signUpForm').submit(function(e){
    e.preventDefault();
    if($(this).valid()){
        $(this).submit();
    }else{
        return false;
    }           
});

形式:

<form id="signUpForm" method="post" action="signup.php">
    <input id="signUpEmail" name="email" class="form-control"> 
    <input id="signUpPassword" name="password" class="form-control" type="password"> 
    <input id="confirmPassword" name="confirmPassword" class="form-control" type="password"> 
</form>

1 个答案:

答案 0 :(得分:0)

这个配置都错了......

$('#signUpForm').validate({ // initialize the plugin
    ....
});

$('#signUpForm').submit(function(e){
    ....     
});

您的.submit()处理程序完全是冗余的,完全干扰了jQuery Validate插件的正确操作,该插件会自动捕获按钮click并阻止submit事件。

换句话说,.submit()处理程序中的代码在功能上与插件已为您执行的操作完全相同。你不需要它,它会破坏验证。


您的errorPlacment回调功能为空,以便停止显示所有错误消息...

errorPlacement: function(error, element) {},

它应该看起来像这样......

$('#signUpForm').validate({ // initialize the plugin
    rules: {
        email: {
            required: true,
            email: true
        },
        password: {
            required: true,
            minlength: 8,
            maxlength: 12
        },
        confirmPassword: {
            equalTo: '#signUpPassword'
        }
    }
});

DEMO:http://jsfiddle.net/2t7dbuuf/


请参阅the documentationSO Tag Wiki page了解正确用法。