我正在开发一个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