0

我有以下正在运行的 JavaScript 代码:

<script>
function validate(form) {
    // Shortcut to save writing
    var pwd = form.elements.lgps.value;

    // Check length
    if(8 > pwd.length || pwd.length > 16)
        return false;

    // Check for at least 1 lowercase letter
    var rgx = /[a-zA-Z]+/;
    if(!rgx.test(pwd))
        return false;

    // Check for at least 1 digit
    rgx = /\d+/;
    if(!rgx.test(pwd))
        return false;

    // Check for no spaces
    rgx = /\s/;
    if(rgx.test(pwd))
        return false;

    return true;
}
</script>

这是我的表格:

<form method="post" action="406.php" language="javascript" 
    name="myform" id="myform" onsubmit="return validate(this);">

如果上述所有方法均失败,我想添加一条消息警报,并在我的表单中添加另一个字段进行验证。所以基本上我有一个用户名字段和一个密码字段。我希望密码字段的长度在 8 到 20 个字符之间,并且至少包含 1 个数字。

4

3 回答 3

0
function validatePwd(form) {
    var pwd = form.elements.lgps.value;

    if(8 > pwd.length || pwd.length > 16){
        alert("Your password must be 8-16 characters in length");
        return false;
    }

    var rgx = /[a-zA-Z]+/;
    if(!rgx.test(pwd)){
        alert("Your need at least 1 lowercase letter");
        return false;
    }

    rgx = /\d+/;
    if(!rgx.test(pwd)){
        alert("You need at least 1 digit");
        return false;
    }

    rgx = /\s/;
    if(rgx.test(pwd)){
        alert("You can't have spaces");
        return false;
    }

    return true;
}

function validateUnm(form){
    var unm = form.elements.lgem.value;

    if(3 > unm.length || unm.length > 20){
        alert("Your username must be 3-20 characters in length");
        return false;
    }

    //and more conditions....

    return true;
}

你可以这样称呼它:

<form onsubmit="validatePwd(this);validateUnm(this)">
于 2012-07-05T16:56:10.097 回答
0

看起来不错,除了第一个正则表达式测试大写和小写之外,只需将 if 语句括起来并添加

    alert('Password not right') 

在退货声明之前..显然对于每次退货,您都可以相应地更改警报。

于 2012-07-05T16:52:53.317 回答
0

下面包括一个利用 jQuery 并将验证要求存储到object命名的tests.

pass根据每个属性中声明的测试检查从所需元素提供的值,在本例中为 ID 为 的输入。如果测试通过,则该属性设置为 1 以指示true. 如果测试失败,则将该属性设置为 0 以指示false.

然后遍历该对象以检查哪些属性通过,哪些属性失败。如果至少一项测试失败,则使用一条alert()消息通知用户无效标准。

HTML:

<input type="text" id="pass" />

jQuery:

function validatePassword(pwd) { 
    var errors = [];

    var tests = {
        '- Min/Max Length of 8-16 characters': function(){
            return (pwd.length < 8 || pwd.length > 16 ? 0 : 1);
        }(),
        '- Contains Alpha-numeric characters': function(){
            rgx = /[a-zA-Z]+/;
            return (!rgx.test(pwd) ? 0 : 1);
        }(),
        '- Contains 1 or more Digits': function(){
            rgx = /\d+/;
            return (!rgx.test(pwd) ? 0 : 1);
        }(),
        '- Contains No Spaces': function(){
            rgx = /\s/;
            return (rgx.test(pwd) ? 0 : 1);
        }()
    };

    for(result in tests ){
        if(tests[result] == 0){
            errors.push(result);
        }
    }

    if(errors.length > 0){
                alert('Please correct your password to meet the following criteria:\n' + errors.join('\n'));
    }
}

$(function(){
    $('#pass').blur(function(){
        validatePassword($(this).val());
    });
});

演示:http: //jsfiddle.net/Rmm6d/

于 2012-07-05T18:41:59.537 回答