2011-05-09 11 views
2

Zで始まり、8文字以上で、*であることを確認する必要があります。 この関数を考えてみましょう:実際に有効なときにパスワードが無効であると言う場合があります

function validatePassword()  
{ 
var strPassword 

//Request user enter their password then check its validity 

strPassword = prompt("Please Enter A Valid Password",""); 

while ((strPassword.length <7) || (strPassword.indexOf('*') ==-1) || (strPassword.charAt(0) != 'Z')) { 
{ 
alert("Your password is invalid, \n Please try again") 
strPassword = prompt("Please Enter A Valid Password",""); 
} 

//Outcome if password is valid 

alert("Your password is valid") 

//End while 

} 
} 
+0

完了しているのですか?どのようなテストパスワードでエラーが発生するのですか? – MJB

+0

期待どおりに検証されないパスワードの例を挙げてください。 – Oswald

+2

また、永遠にループしたり、有効なパスワードを入力したりするまでのように見えます。現実世界のための醜い種類 - 私はそれが本当ではないことを望む。 – MJB

答えて

1

あなたはstrPassword.length < 8あるべきか、それが他の要件に失敗するんstrPassword.length < 7がありますか?

EDIT:有効なパスワードのテストを分けて、それぞれに意味のあるメッセージを出力します。それから、なぜ失敗するのかがわかるはずです。

+0

これを修正しました – Cool66

2

最後にORチェックでダブル{があります。かっこが多すぎます。

function validatePassword()  
{ 
    var strPassword = prompt("Please Enter A Valid Password",""); 
    while ((strPassword.length <7) || 
     (strPassword.indexOf('*') ==-1) || 
     (strPassword.charAt(0) != 'Z')) 
    { 
     alert("Your password is invalid, \n Please try again"); 
     strPassword = prompt("Please Enter A Valid Password",""); 
    } 
    alert("Your password is valid"); 
} 
0

それが失敗しないときはこの1つは

http://jsfiddle.net/mplungjan/mvwRj/

function validatePassword() { 
    var strPassword; 

    //Request user enter their password then check its validity 

    strPassword = prompt("Please Enter A Valid Password - Starts with Z minimum 8 chars including an *",""); 

    while (strPassword==null || strPassword.length <8 || 
           strPassword.indexOf('*') ==-1 || 
           strPassword.charAt(0) != 'Z') { 
    alert("Your password is invalid, \n Please try again") 
    strPassword = prompt("Please Enter A Valid Password",""); 
    } //End while 


    //Outcome if password is valid 

    alert("Your password is valid") 

} 
validatePassword();