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