Javascript 根据上次输入的值,应在下拉列表中启用复选框

Javascript 根据上次输入的值,应在下拉列表中启用复选框,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试在下拉列表中创建密码验证。根据输入字段,该复选框将被启用。如果我输入字母表和数字,条件工作正常。如果我输入字母表和数字,则该复选框不会被启用。基本上,它跳过了循环。我不确定这是否可以通过开关盒实现,因为它应该与正则表达式模式一致。Pfa我的代码。谢谢 .dropbtn{ 背景色:#4CAF50; 颜色:白色; 填充:16px; 字体大小:16px; 边界:无; 光标:指针; 宽度:400px; } .dropbtn:悬停,.dropbtn:焦点{ 背景色:#3e8e41; } .下

我正在尝试在下拉列表中创建密码验证。根据输入字段,该复选框将被启用。如果我输入字母表和数字,条件工作正常。如果我输入字母表和数字,则该复选框不会被启用。基本上,它跳过了循环。我不确定这是否可以通过开关盒实现,因为它应该与正则表达式模式一致。Pfa我的代码。谢谢


.dropbtn{
背景色:#4CAF50;
颜色:白色;
填充:16px;
字体大小:16px;
边界:无;
光标:指针;
宽度:400px;
}
.dropbtn:悬停,.dropbtn:焦点{
背景色:#3e8e41;
}
.下拉列表{
位置:相对位置;
显示:内联块;
}
.下拉内容{
显示:无;
位置:绝对位置;
背景色:#f9f9f9;
最小宽度:160px;
溢出:自动;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
z指数:1;
宽度:430px;
}
}
.下拉内容a{
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
}
.下拉列表a:悬停{背景色:#f1f1}
.show{display:block;}
8-16个字符长
至少一封信
至少一个数字
至少一个符号
不包含无效字符或空格
$(“#密码”)。单击(函数(){
document.getElementById(“myDropdown”).classList.toggle(“show”);
});
$(“#密码”).keyup(函数(){
var InputValue=$(this.val();
console.log(InputValue.length);
if(InputValue.match(/^[a-zA-Z]$/){
$(“#一个字符”).attr('checked',true);
}
else if(InputValue.match(/^[0-9]*/){
$(“#oneNumber”).attr('checked',true);
}
如果(InputValue.length>8 | | InputValue.length<16){
$(“#strong密码”).attr('checked',true);
}
});
window.onclick=函数(事件){
如果(!event.target.matches('.dropbtn')){
var dropdowns=document.getElementsByClassName(“下拉内容”);
var i;
对于(i=0;i
您当前正在运行
if/else
,但我假设您希望始终检查所有条件

在这种情况下,每次都要评估每个条件,而不是相互替代

另外,对于长度,如果要确保密码在8-16个字符之间,请不要
|
而是
&&
评估

虽然我不太了解正则表达式,但当前的正则表达式似乎没有正确检查输入,例如,对于字母,您的正则表达式只返回了第一个字符的匹配项

我的更新似乎有效,但可能有更好的正则表达式可以使用

为了清晰起见,我将您的评估分为几个小方法,但如果您愿意,可以将它们放入事件处理程序中

我也没有填写缺少的验证,因为您似乎没有要求它们,但您可以只更新我提供的2个方法,添加所需的正则表达式求值或类似的方法,它应该与其他方法一样工作

window.onclick=函数(事件){
如果(!event.target.matches('.dropbtn')){
var dropdowns=document.getElementsByClassName(“下拉内容”);
var i;
对于(i=0;i8&&input.length<16
};
变量hasLetters=函数(输入){
返回输入。匹配(/[a-zA-Z]/);
};
变量hasNumbers=函数(输入){
返回输入。匹配(/[0-9]/);
};
var hasSymbols=函数(输入){
返回true;
};
var containsnovalidinput=函数(输入){
返回true;
};
.dropbtn{
背景色:#4CAF50;
颜色:白色;
填充:16px;
字体大小:16px;
边界:无;
光标:指针;
宽度:400px;
}
.dropbtn:悬停,
.dropbtn:焦点{
背景色:#3e8e41;
}
.下拉列表{
位置:相对位置;
显示:内联块;
}
.下拉内容{
显示:无;
位置:绝对位置;
背景色:#f9f9f9;
最小宽度:160px;
溢出:自动;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
z指数:1;
宽度:430px;
}
}
.下拉内容a{
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
}
.下拉菜单a:悬停{
背景色:#f1f1
}
.表演{
显示:块;
}

8-16个字符长
至少一封信
至少一个数字
至少一个符号
不包含无效字符或空格

您当前正在运行
if/else
,但我假设您希望始终检查所有条件

在这种情况下,每次都要评估每个条件,而不是相互替代

另外,对于长度,如果要确保密码在8-16个字符之间,请不要
|
而是
&&
评估

虽然我不太了解正则表达式,但当前的正则表达式似乎没有正确检查输入,例如,对于字母,您的正则表达式只返回了第一个字符的匹配项

我的更新似乎有效,但可能有更好的正则表达式可以使用

为了清晰起见,我将您的评估分为几个小方法,但如果您愿意,可以将它们放入事件处理程序中

我也没有填写缺少的验证,因为您似乎没有要求它们,但您可以只更新我提供的2个方法,并添加所需的regex求值或类似的方法,并且