javascript密码计不递增

时间:2013-08-13 10:52:54

标签: javascript jquery

我知道这在这里经常是一个问题,但我不认为它特别涉及到设计模式,而是更多地依赖于我的愚蠢。

这可能是一个非常简单的解决方案,但我很累,而且它开始对我有所帮助了。我已经在控制台中解雇它并且它会相应地做出响应,但是当我在输入中输入任何内容时,它都没有响应。

这是JS

$(document).ready(function(){
var passwordStrength = function (element){
    var password = element.val();
    var strength = [ 'Very Weak', 'Weak', 'Better', 'Strong', 'Very Strong' ];
    var score   = 0;
    // > 6
    if (password.length > 6){ 
        score+=1;
    }
    //has lower and uppercase     
    if ((password.match(/[a-z]/) ) && (password.match(/[A-Z]/))){
        score+=1;
    }
    //has number
    if (password.match(/\d+/)){
        score+=1;
    }
    //has special character
    if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)){
        score+=1;
    }
    //more than 12 characters
    if (password.length > 12){
        score+=1;
    }

    $('#pwdstrtxt').text(strength[score]);
    $('#pwdstrtxt').addClass('pwdText'+score);
    $('#pwdStrFill').addClass('pwdScore'+score);
}

passwordStrength($('#pass'));

});

这是一个JSFiddle

理想情况下,我希望加载栏和文本根据输入动态更改。

任何帮助将不胜感激:)谢谢。

4 个答案:

答案 0 :(得分:7)

每次修改输入时都必须调用该事件,如下所示:

$("#pass").on("keyup change", function() {
    passwordStrength($(this));
})

我已更新您的jsFiddle

答案 1 :(得分:1)

首先,您需要确保在用户输入内容时执行您的代码。这是通过绑定到文本字段上的keydown事件来完成的。

$(document).ready(function() {
    $('#pass').on('keydown change', function() { passwordStrength($('#pass'));});;
});

然后,您还应该确保在添加新的类之前删除您的类,以允许用户在他们改变主意时重新键入密码。

$('#pwdstrtxt').removeClass();
$('#pwdStrFill').removeClass();

我更新了您的小提琴,以反映这些变化:http://jsfiddle.net/UGDLb/12/

答案 2 :(得分:0)

您需要在keyup上添加一个事件监听器。

$('#pass').on('keyup', function () {passwordStrength($(this))});

您还需要使用

正确更新密码栏
$('#pwdStrFill').attr('class', 'pwdScore' + score);

JSFiddle

答案 3 :(得分:0)

我认为你可以使用这个简单易用的... Jquery validation plugin