我正在为我现有的验证设置添加密码强度功能,而我最后一项我不知道如何最好地完成。我的错误显示如下:
highlight: function(label) {
$(label).closest('.form-element').addClass('error').closest('.form-element').removeClass('success');
$('#result').html('');/*removes any strength messages on failed validation*/
},
success: function(label) {
label
.text('OK!').addClass('valid')
.closest('.form-element').addClass('success');
},
id“result”是密码强度消息。因此,当触发验证错误(范围长度,所需)等时,将隐藏有关密码强度的任何消息。
相关部分密码强度检查是这样的:
if (strength < 2 ){
$('#result').removeClass();
$('#result').addClass('passwordWeak');
return '(Password is weak)'
} else if (strength == 2) {
$('#result').removeClass();
$('#result').addClass('passwordGood');
return '(Password is good)'
} else {
$('#result').removeClass();
$('#result').addClass('passwordStrong');
return '(Password is strong)'
}
};
我想要发生的是,如果显示任何验证错误,请不要显示其中一个错误。他们触发它的方式是输入3个字符(显示“密码很弱”),tab键到下一个字段(它激活最小长度不是6的验证错误并隐藏“密码弱”),然后返回添加更多字符到密码我仍然有验证错误消息,但一旦我键入字符4我得到“密码是弱”。如果当前没有显示来自验证的错误,我只会显示一个那些评级。
生成的验证错误标签如下所示:
<label class="error" for="thispassword" generated="true">Password must be between 6 and 50 characters.</label>
答案 0 :(得分:0)
以下是我如何解决它(现在)。在密码字段的keyup()中,我添加了两行 - 一行隐藏生成的错误标签(由validate生成),另一行删除实际输入字段的错误类:
$('#thispassword').keyup(function () {
//$('label.error').hide();
// prev hids all error labels following just gets the one we want
$('#result').prev('label.error').hide();
$(this).closest('.form-element').removeClass('error');
$('#result').html(checkStrength($('#thispassword').val()));
});