jQuery验证程序、重置密码字段和消息

jQuery验证程序、重置密码字段和消息,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jQuery验证插件进行表单字段验证。其思想是,若表单提交中的任何字段无效,则密码字段及其错误消息将重置,而其他字段将保留。 我有重置密码字段的权限,但无法删除错误消息 代码在这里: 如果为所有字段输入无效值并提交,密码输入字段将为空,但其错误仍然存在。在这种情况下,我想删除密码字段的错误消息 突出显示似乎发生在invalidHandler之后,这导致了此问题 代码如下: <form id="registerForm" class="regForms" method="post"

我正在使用jQuery验证插件进行表单字段验证。其思想是,若表单提交中的任何字段无效,则密码字段及其错误消息将重置,而其他字段将保留。 我有重置密码字段的权限,但无法删除错误消息

代码在这里:

如果为所有字段输入无效值并提交,密码输入字段将为空,但其错误仍然存在。在这种情况下,我想删除密码字段的错误消息

突出显示似乎发生在invalidHandler之后,这导致了此问题

代码如下:

<form id="registerForm" class="regForms" method="post" action="/">

        <span>username: </span><input type="text" id="username" name="username" /><br />
        <span class="passwordHolder">
            <span>password: </span><input type="password" id="password1" name="password1" /><br />
        </span>
        <span class="passwordHolder">
            <span>confirm password: </span><input type="password" id="password2" name="password2" /><br />
        </span>

        <input type="submit" />
    </div>
</form>



$("#registerForm").validate({
    rules: {
        username: {
            required: true,
            minlength: 6
        },
        password1: {
            required: true,
            minlength: 6,
            maxlength: 256
        },
        password2: {
            required: true,
            equalTo: "#password1",
            minlength: 6,
            maxlength: 256
        }
    },

    messages: {
        username: {
            required: "required",
            minlength: "should be 6 or longer"
        },
        password1: {
            required: "required",
            minlength: "should be 6 or longer"
        },
        password2: {
            required: "required",
            minlength: "should be 6 or longer",
            equalTo: "should be the same as password"
        }
    },

    invalidHandler: function(form, validator) {
        $(':password').val('');
        $('.passwordHolder label.error').hide();
    }

});

用户名:
密码:
确认密码:
$(“#注册执行”).validate({ 规则:{ 用户名:{ 要求:正确, 最小长度:6 }, 密码1:{ 要求:正确, 最小长度:6, 最大长度:256 }, 密码2:{ 要求:正确, equalTo:#密码1“, 最小长度:6, 最大长度:256 } }, 信息:{ 用户名:{ 必选:“必选”, minlength:“应为6或更长” }, 密码1:{ 必选:“必选”, minlength:“应为6或更长” }, 密码2:{ 必选:“必选”, minlength:“应为6或更长”, equalTo:“应与密码相同” } }, invalidHandler:函数(表单、验证器){ $(':password').val(''); $('.passwordHolder label.error').hide(); } });
我认为您的建议绝对正确,即在invalidHandler之后显示突出显示。 我认为你应该使用errorPlacement方法。文档可在此处找到:

您可以检查password类型的元素,并在这种情况下忽略错误位置

另外,一些代码:

$("#myform").validate({
  errorPlacement: function(error, element) {
        if(!element.is(':password'))
              element.after(error);
   },
   debug:true
 })

问题是
标签.error
添加在
invalidHandler
调用之后

一个快速的解决方法是使用setTimeout

setTimeout(function() {
            $('.passwordHolder label.error').hide();
          },100);

在提交表格时,您可以这样检查:

$("#registerForm").submit(function(){
    if ($("#password1").valid() == true ) {
       alert('Ok');
    }
}); 

我尝试了errorPlacement,但使用它,我永远不会收到密码验证消息,我只需要在提交时清除它们。它被标记为必填字段,因此无论您尝试执行什么操作,它总是会被标记为
无效
。。。当一个字段验证失败时,插件应该这样做。然后单击两次
submit
,返回另一条错误消息。