为什么我的JavaScript代码没有按预期运行?
与我编写的一些JavaScript相关的两个查询没有按我认为应该的方式执行。这是一个密码验证表单,有两个输入字段,允许用户写入密码,然后重新输入,以查看是否存在匹配项 下面是函数为什么我的JavaScript代码没有按预期运行?,javascript,regex,if-statement,Javascript,Regex,If Statement,与我编写的一些JavaScript相关的两个查询没有按我认为应该的方式执行。这是一个密码验证表单,有两个输入字段,允许用户写入密码,然后重新输入,以查看是否存在匹配项 下面是函数 function passwordValidation(){ var uname = document.getElementById("pword1").value; var pword = document.getElementById("cPassword").value; var ma
function passwordValidation(){
var uname = document.getElementById("pword1").value;
var pword = document.getElementById("cPassword").value;
var matchCol = "#009900";
var noMatchCol = "#CC0000";
var noBg = "#FFFFFF";
var passReq = new RegExp ("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[\\\+\=\"\.\[\]_£|`¬':;~{}<>()#?!@$%^&*-]).{8,20}$");
if (uname.length < 1 || pword.length < 1){
cPassword.style.backgroundColor = noBg;
match = "";
}
if(passReq.test(pword1)){
DIMR = "Does Meet Requirements";
}else {
DIMR = "Does Not Meet Requirements";
}
if (uname == pword){
match = "Match!";
cPassword.style.backgroundColor = matchCol;
} else{
match = "No Match!";
cPassword.style.backgroundColor = noMatchCol;
}
document.getElementById("combination").innerHTML = match;
document.getElementById("reqMeeting").innerHTML = DIMR;
}
函数密码验证(){
var uname=document.getElementById(“pword1”).value;
var pword=document.getElementById(“cPassword”).value;
var matchCol=“#009900”;
变量noMatchCol=“#CC0000”;
var noBg=“#FFFFFF”;
var passReq=new RegExp(“^(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.?[\\+\=\”\.\[\].\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
如果(未指定长度<1 | | pword.length<1){
cPassword.style.backgroundColor=noBg;
match=“”;
}
if(密码请求测试(pword1)){
DIMR=“不符合要求”;
}否则{
DIMR=“不符合要求”;
}
如果(uname==pword){
match=“match!”;
cPassword.style.backgroundColor=matchCol;
}否则{
match=“不匹配!”;
cPassword.style.backgroundColor=noMatchCol;
}
document.getElementById(“组合”).innerHTML=match;
document.getElementById(“reqMeeting”).innerHTML=DIMR;
}
首先,为什么它会忽略第一个if语句?当我在浏览器中加载代码并运行它时。当我在第一个输入框中键入值时,第二个将变为红色。即使if语句清楚地说,如果输入a或输入b为空,请不要这样做
其次,
.test
部分工作不正常。也许我的代码是错误的,但对我来说,这意味着如果正则表达式passReq
与pword1
值匹配,那么要么打印出“不满足要求”
。我还将其更改为变量名passReq.test(uname)
但仍然没有发生任何事情。这是因为这是一个单独的if
条件。因此,无论结果如何,它都将继续到下一个条件。我想您必须使用else
与第一个if
条件一起使用,以获得您想要的预期结果
function passwordValidation() {
var uname = document.getElementById("pword1").value;
var pword = document.getElementById("cPassword").value;
var matchCol = "#009900";
var noMatchCol = "#CC0000";
var noBg = "#FFFFFF";
var passReq = new RegExp("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[\\\+\=\"\.\[\]_£|`¬':;~{}<>()#?!@$%^&*-]).{8,20}$");
if (uname.length < 1 || pword.length < 1) {
cPassword.style.backgroundColor = noBg;
match = "";
} else { // this should solve the problem
if (passReq.test(pword)) {
DIMR = "Does Meet Requirements";
} else {
DIMR = "Does Not Meet Requirements";
}
if (uname == pword) {
match = "Match!";
cPassword.style.backgroundColor = matchCol;
} else {
match = "No Match!";
cPassword.style.backgroundColor = noMatchCol;
}
document.getElementById("combination").innerHTML = match;
document.getElementById("reqMeeting").innerHTML = DIMR;
}
}
函数密码验证(){
var uname=document.getElementById(“pword1”).value;
var pword=document.getElementById(“cPassword”).value;
var matchCol=“#009900”;
变量noMatchCol=“#CC0000”;
var noBg=“#FFFFFF”;
var passReq=new RegExp(“^(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.?[\\+\=\”\.\[\].\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
如果(未指定长度<1 | | pword.length<1){
cPassword.style.backgroundColor=noBg;
match=“”;
}否则{//这应该可以解决问题
if(密码请求测试(pword)){
DIMR=“不符合要求”;
}否则{
DIMR=“不符合要求”;
}
如果(uname==pword){
match=“match!”;
cPassword.style.backgroundColor=matchCol;
}否则{
match=“不匹配!”;
cPassword.style.backgroundColor=noMatchCol;
}
document.getElementById(“组合”).innerHTML=match;
document.getElementById(“reqMeeting”).innerHTML=DIMR;
}
}
这种方法增加了圈复杂度。但不管怎样,结果是正确的。多么简单!谢谢你,伙计。关于为什么我的“不符合/不符合要求”信息不会显示的第二部分有什么想法吗?我希望它的显示方式与“匹配/不匹配”的显示方式相同。如果not@BlueShark“可能是会议不可见吧?”阿米特约基我不小心把它拿了出来。但是现在在我的html的顶部,它看起来是这样的:“”即使我输入了一些有效的东西,我仍然会得到消息“不满足要求”而不是“确实满足要求”@BlueShark你能做一个JSFIDLE吗?