2011-05-09 54 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 2011-05-09 22:24:57

+0

給出一個未按預期驗證的示例密碼。 – Oswald 2011-05-09 22:26:30

+2

此外,它看起來像你想要它永遠循環,或直到他們輸入一個有效的密碼。對現實世界來說很醜 - 我希望它不是真實的。 – MJB 2011-05-09 22:30:22

回答

1

你有strPassword.length < 7這應該是strPassword.length < 8或者它未能對其他的要求嗎?

編輯:我會分出有效密碼的測試,並打印出每一個更有意義的消息。那麼你應該明白爲什麼它會失敗。

+0

只是糾正了這一點 – Cool66 2011-05-09 22:25:53

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

這一個是完整的

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(); 
相關問題