Jquery验证 - 删除生成的标签

时间:2013-06-18 18:31:27

标签: jquery jquery-validate

我正在为我现有的验证设置添加密码强度功能,而我最后一项我不知道如何最好地完成。我的错误显示如下:

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>

1 个答案:

答案 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()));
});