我正在開發一個Flash密碼驗證項目,其中用戶鍵入的密碼爲6到10個字符,並且必須包含一個大寫,一個小寫和一個數字。Actionscript 3密碼驗證程序不匹配密碼
當我測試程序並輸入密碼時,我得到「密碼不匹配,請重試。」在feedback_txt字段中。
我有兩個由Submit按鈕的事件處理函數調用的函數:Same()和PasswordApproved()。同一個函數驗證兩次輸入的密碼。 PasswordApproved函數驗證密碼是否符合指定的標準。
我給小費使用CharCodeAt來幫助PasswordApproved部分,但我似乎無法弄清楚如何做到這一點。
下面的代碼:
submit_btn.addEventListener(MouseEvent.CLICK,Submit);
function Submit(e:MouseEvent):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
if (Same(pass1,pass2) == true) {
if (PasswordApproved(pass1) == true) {
feedback_txt.text = "Your password was APPROVED."
feedback_txt.textColor = 0x00FF00;
} else {
feedback_txt.text = "DID NOT MEET QUALIFICATIONS. Try again."
feedback_txt.textColor = 0xFF0000;
}
} else {
feedback_txt.text = "Passwords DID NOT MATCH. Try again."
feedback_txt.textColor = 0xFF0000;
}
password1_txt.text = "";
password2_txt.text = "";
stage.focus = password1_txt;
}
這是我的功能(我想這就是爲什麼它不工作,我不能正確寫它,或者它只是錯誤的原因是什麼?):
function Same(pass1,pass2:String):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
}
function PasswordApproved(pass1:String):String {
var pass1:String = "abchefghjkmnpqrstuvwxyzQWERTYUIOPLKJHGFDSAZXCVBNM";
var i:Number = 0;
var pass:String = "";
var nLength:Number = pass1.length;
var length:Number = 10
while(i<=length)
{
var num:Number = Math.round(Math.random() * nLength);
pass += pass1.charCodeAt(num);
i++;
}
return pass;
}
我嘗試了你的建議,但我仍然收到「密碼不匹配,請重試。」我發佈了其餘的代碼,但我認爲Same函數是它不工作的原因。有沒有辦法讓我確保兩個密碼匹配? – Tams
@Tams正如我已經提到的,你甚至不需要'Same'函數,因爲你使用'if'語句驗證你的文本字段是相同的,但是如果你喜歡總是使用它,我會編輯我的答案是爲你糾正它。 – akmozo
謝謝你,akmozo。我測試過,現在一切正常。 – Tams