2013-06-18 68 views
0

我正在为我现有的验证设置添加密码强度函数,而我最后一个项目我不确定如何最好地完成。我的错误显示如下所示:Jquery验证 - 删除生成的标签

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个字符(显示“密码弱”),选项卡到下一个字段(它触发验证错误的最小长度不是6,并隐藏“密码弱”),然后返回添加更多字符到密码我仍然有验证错误消息,但只要我键入字符4我得到“密码是弱”。我只有一个评级显示,如果没有验证错误当前显示。

用于验证产生的错误标签,如下所示:

<label class="error" for="thispassword" generated="true">Password must be between 6 and 50 characters.</label> 
+0

可以使用hasClass ()来确定它。类似于** if(!$(label).closest('。form-element')。hasClass('error')&& strength <2)**,这意味着执行if元素不应该包含.error类 – Nirus

+0

这给出了“标签未定义”,因为在引发验证错误之前,具有“错误”类的标签不存在,所以初始密码强度测试失败。 – Steve

+0

可以发布一些与你的代码相关的jsfiddle ... – Nirus

回答

0

这里是我如何解决它(现在)。在我的keyup()在密码字段我添加了两行 - 一个隐藏产生的错误标签(通过验证产生的),另除去实际输入字段的错误类:

$('#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())); 
}); 
+0

是的,也可以! – Nirus