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

最初の正規表現が大文字と小文字をテストするという事実に加えて、それは問題ないように見えますが、 if ステートメントを括弧で囲んで追加するだけです

    alert('Password not right') 

return ステートメントの前に..明らかに各 return に対して、それに応じてアラートを変更できます。

于 2012-07-05T16:52:53.317 に答える
0

以下に含まれるのは、jQuery を利用し、検証要件をobject名前付き.xml に格納するソリューションですtests

目的の要素 (この場合は ID が の入力) から提供される値はpass、各プロパティで宣言されたテストに対してチェックされます。テストに合格すると、そのプロパティは 1 に設定されてtrue. テストが失敗した場合、プロパティは 0 に設定され、false.

次に、オブジェクトが走査されて、どのプロパティが成功し、どのプロパティが失敗したかが確認されます。少なくとも 1 つのテストが失敗した場合、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 に答える
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 に答える