老师,请问为什么密码强度的后面两个实现不了?谢谢
来源:3-10 作业题
慕勒8522502
2019-11-14 13:32:41
//封装获取元素函数
var getElem = function(id){
return typeof(id) === 'string' ? document.getElementById(id) : id;
}
//创建对象保存所有要获取的元素
var dropdown_menu = document.getElementById("dropdown_menu"),
dropdown_menu_list = document.getElementById("dropdown_menu_list"),
nickyname = document.getElementById("nickyname"),
psw = document.getElementById("psw"),
confirm_psw = document.getElementById("confirm_psw"),
u_name = document.getElementById("u_name"),
id_type = document.getElementById("id_type"),
id_num = document.getElementById("id_num"),
email = document.getElementById("email"),
tel = document.getElementById("tel"),
ppl_role = document.getElementById("ppl_role"),
submit = document.getElementById("submit"),
choose = document.getElementById("choose"),
check_result = document.getElementsByClassName("check_result"),
safe1 = document.getElementById("safe1"),
safe2 = document.getElementById("safe2"),
safe3 = document.getElementById("safe3");
var input1 = false;
var input2 = false;
var input3 = false;
var input4 = false;
var input5 = false;
var input6 = false;
var input7 = false;
// 封装通用事件绑定方法,也就是IE和非IE浏览器事件处理的方法
function addHandler(element, type, handler){
//非IE浏览器
if (element.addEventListener) {
element.addEventListener(type, handler, true);
}
//IE浏览器支持DOM2级
else if (element.attachEvent) {
element.attachEvent('on' + type, handler);
}
//IE浏览器不支持DOM2级
//type是接收具体事件的参数,是个变量
//任何用·的地方都可以用中括号[]取代,比如next.onclick = next["onclick"]只是前面的方法更简洁。
else {
element['on' + type] = handler;
}
}
//下拉菜单的设置
addHandler(dropdown_menu, "mouseover",function(){
dropdown_menu_list.className = "dropdown_menu_list_show";
dropdown_menu.className = "dropdown_menu_over";
});
addHandler(dropdown_menu, "mouseout",function(){
dropdown_menu_list.className = "dropdown_menu_list";
dropdown_menu.className = "dropdown_menu";
});
//用户名验证
nickyname.onblur = function(){
var reg = /^[a-zA-Z]\w{5,29}$/;
if(this.value == "" || !reg.exec(nickyname.value)){
check_result[0].innerHTML = "6-30为字母数字或_,字母开头";
check_result[0].style.color = "red";
}else if(reg.exec(nickyname.value)){
check_result[0].innerHTML = "用户名输入正确";
check_result[0].style.color = "green";
input1 = true;
}
}
//登录密码验证
psw.onblur = function(){
var reg = /\S{6,20}/;
var reg1 = /^[0-9]{6,20}$|^[a-zA-Z]{6,20}$|^\W{6,20}$/;
var reg2 = /^[0-9a-zA-Z]{6,20}$|^[\W|a-zA-Z]{6,20}$|^[\W|0-9]{6,20}$/;
var reg3 = /\W[0-9a-zA-Z]*/;
// var reg = /^([a-zA-Z]\w+[%&!-?]+){6,20}$/;
// var reg1 = /^[0-9]{6,20}|[a-zA-Z]{6,20}|[%&!-?]{6,20}$/; //纯符号是这么表示??
// var reg2 = /^[0-9]+[a-zA-Z]+{6,20}|[0-9]+[%&!-?]+{6,20}|[a-zA-Z]+[%&!-?]+{6,20}$/; //两种类型结合
if(this.value == "" || !reg.exec(psw.value)){
check_result[1].innerHTML = "请输入6-20位字母,数字或符号";
check_result[1].style.color = "red";
}else if(reg.exec(psw.value)){
check_result[1].innerHTML = "";
safe1.style.backgroundColor = "red";
}else if(reg1.exec(psw.value)){
input2 = true;
}else if(reg2.exec(psw.value)){
safe2.style.backgroundColor = "orange";
input2 = true;
}else if(reg3.exec(psw.value)){
safe3.style.backgroundColor = "green";
input2 = true;
}
// if(this.value == "" || !reg.exec(psw.value)){
// check_result[1].innerHTML = "请输入6-20位字母,数字或符号";
// check_result[1].style.color = "red";
// }else if(reg1.exec(psw.value)){
// input2 = true;
// }else if(reg2.exec(psw.value)){
// safe2.className = "safe2_show";
// input2 = true;
// }else if(reg3.exec(psw.value)){
// safe3.className = "safe3_show";
// input2 = true;
// }
}
//确认密码验证
confirm_psw.onblur = function(){
if(this.value == ""){
check_result[2].innerHTML = "密码不能为空";
check_result[2].style.color = "red";
}else if(this.value != psw.value){
check_result[2].innerHTML = "两次密码输入不一致,请重新输入";
check_result[2].style.color = "red";
}else {
check_result[2].innerHTML = "两次输入一致";
check_result[2].style.color = "green";
}
}
//所有正则判断表达式
// var regExp = {
// nickyname: /^[a-zA-Z]\w{5-29}$/,
// psw:/^\w{6-20}$/,
// confirm_psw:/^\w{6-20}$/,
// u_name:/^[\u4e00-\u9fa5]{2,15}|[a-zA-Z]{3,30}$/,
// id_type:/^[1-9][0-9]{17}$|^[1-9][0-9]{16}[x|X]$/,
// email:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,
// tel:/^1[0,3-9]\d{3,9}$/, //这个不确定
// };
//错误信息提示
// var str = [
// '6-30为字母数字或_,字母开头',
// '请输入6-20位字母,数字或符号',
// '密码不能为空',
// '姓名只能包含中文或者英文且字符在3-30个之间!',
// '请输入18位身份证号码',
// '邮箱不能为空',
// '您输入的手机号码不是有效格式!'
// ];
//封装显示提示文本的函数
// function check(elem, reg, index, str){
// var Elem = allElem[elem];
// var Reg = regExp[reg];
// if(Reg.exec(Elem.value)){
// allElem.check_result[index].innerHTML = "用户名输入正确";
// allElem[nickyname].check_result[nickyname].style.color = "green";
// allElem[confirm_psw].check_result[confirm_psw].innerHTML = "两次输入一致";
// allElem[confirm_psw].check_result[confirm_psw].style.color = "green";
// }
// }
//用户名验证
// function check(elem, reg, index, str){
// var Elem = allElem[elem];
// var Reg = regExp[reg];
// if(Reg[nickyname].test(allElem[nickyname].value)){
// allElem[nickyname].check_result[0].innerHTML = "用户名输入正确";
// }
// }
// allElem.nickyname.onblur = function(){
// return check('nickyname','nickyname',0,str[0] )
// }<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>3-10</title> <link rel="stylesheet" href="./css/style.css"> </head> <body> <!-- 头部 --> <header> <div class="header_wrap"> <div class="header_logo"> <a href="javascript:;" class="header_title1"><img src="./img/logo.png" alt="">慕课高铁服务中心 | </a> <a href="javascript:;" class="header_title2"> 客户服务</a> </div> <nav class="header_nav"> <a href="javascript:;" class="header_nav_item">意见反馈 <span id="orange-link">imooc@com</span></a> <a href="javascript:;" class="header_nav_item">您好,请<span id="orange-link">登录 </span></a>| <a href="javascript:;" class="header_nav_item">注册</a> <a href="javascript:;" class="header_nav_item dropdown_menu" id="dropdown_menu">我的IMOOC▼</a> <div class="dropdown_menu_list" id="dropdown_menu_list"> <a href="javascript:;">未完成订单</a> <a href="javascript:;">已完成订单(改/退)</a> <a href="javascript:;">我的保险</a> <a href="javascript:;">查看个人信息</a> <a href="javascript:;">账户安全</a> <a href="javascript:;">常用联系人</a> <a href="javascript:;">重点旅客预约</a> <a href="javascript:;">遗失物品查找</a> <a href="javascript:;">服务查询</a> <a href="javascript:;">投诉</a> <a href="javascript:;">建议</a> </div> <a href="javascript:;" class="header_nav_item phone_version"> 手机版</a> </nav> </div> </header> <!-- 主体 --> <main class="main"> <p class="main_title">您现在的位置:<span>客运首页>注册</span></p> <div class="main_wrap"> <div class="info"> <div class="info_title">账户信息</div> <!-- 需要填写的内容 --> <div class="info_detail"> <p> <span class="info_option"><span class="star">*</span>用户名:</span> <input type="text" size="35" placeholder="用户名设置成功后不可修改" id="nickyname"> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>登录密码:</span> <input type="password" size="35" placeholder="6-20位字母、数字或符号" id="psw"> <span class="check_safe"> <span class="safe1" id="safe1"></span> <span class="safe2 safe2_show" id="safe2"></span> <span class="safe3 safe3_show" id="safe3"></span> </span><br> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>确认密码:</span> <input type="password" size="35" placeholder="再次输入您的登录密码" id="confirm_psw"></span> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>姓名:</span> <input type="text" size="35" placeholder="请输入姓名" id="u_name"> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>证件类型:</span> <select name="id_type" id="id_type"> <option value="二代身份证" selected="selected">二代身份证</option> <option value="港澳通行证">港澳通行证</option> <option value="台湾通行证">台湾通行证</option> <option value="护照">护照</option> </select> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>证件号码:</span> <input type="text" size="35" placeholder="请输入您的证件号码" id="id_num"> <span class="check_result"></span> </p> <p> <span class="info_option">邮箱:</span> <input type="text" size="35" placeholder="请正确填写邮箱地址" id="email"> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>手机号码:</span> <input type="text" size="35" placeholder="请输入您的手机号码" id="tel"> <span class="check_result"></span> </p> <p> <span class="info_option"><span class="star">*</span>旅客类型:</span> <span> <select name="ppl_role" id="ppl_role"> <option value="成人" selected="selected">成人</option> <option value="儿童">儿童</option> <option value="学生">学生</option> <option value="残疾军人">残疾军人</option> <option value="伤残人民警察">伤残人民警察</option> </select> </span> <span class="check_result"></span> </p> <div class="policy" id="policy"> <input type="checkbox" id="choose"> <label for="choose">我已阅读并同意遵守规定<span class="railway_policy">《中国铁路客户服务中心网站服务条款》</span></label><br /> <button id="submit">下一步</button> </div> </div> </div> </div> </main> <!-- 底部 --> <footer> <p class="about_us">关于我们 | 网站声明</p> <p class="copyrihgt">Copyright © 2017 imooc.com All Rights Reserved | 京ICP备 13046642号-2</p> </footer> <script type="text/javascript" src="./js/script.js"></script> </body> </html>
*{
padding:0;
margin:0;
font-family: "Microsoft YaHei";
}
a{text-decoration: none;}
header{
width:100%;
height:128px;
background-color: #eee;
border-bottom: 2px solid rgb(36,135,201);
}
/*header灰色部分整体*/
.header_wrap{
width:1200px;
height:130px;
margin:auto;
}
/*logo,header左侧-----------------------*/
.header_wrap .header_logo{
height:130px;
cursor: pointer;
float:left;
line-height: 130px;
font-size: 0px;
/*border:1px solid blue;*/
}
.header_wrap .header_logo .header_title1 img{
width:100px;
height: 100px;
vertical-align: middle;
}
/*慕课高铁服务中心*/
.header_logo .header_title1{
font-size: 20px;
color:black;
left:130px;
vertical-align: middle;
}
/*客户服务*/
.header_logo .header_title2{
font-size: 15px;
color:#aaa;
left:300px;
vertical-align: middle;
}
/*header右边导航内容-----------------------*/
.header_nav{
width:650px;/*没有起作用???好奇怪啊*/
height:40px;
font-size: 16px;
float:right;
/*vertical-align: middle;*/
margin-top:55px;
/*border:1px solid red;*/
text-align:right;
}
.header_nav_item{
color:black;
height:30px;
width:50px;
line-height: 30px;
}
/*.header_wrap .header_nav .header_nav_item span .orange-link{
color:red; 这种写法为什么不行呢?
}*/
#orange-link{
color:rgb(251,116,3);
}
.header_nav .phone_version{
background:url("../img/1.png") no-repeat;
background-size: 22%;
}
/*-----------------------下拉菜单imooc-----------------------*/
.dropdown_menu{
color:black;
}
.dropdown_menu_over{
color:rgb(251,116,3);
}
.dropdown_menu_list{
width:150px;
font-size:10px;
background-color: white;
border:1px solid rgb(251,116,3);
/*这一句可以把下拉菜单隐藏起来*/
display:none;
padding:10px 10px 0 10px;
position:absolute;
right:140px;
z-index:1;
}
.dropdown_menu_list a,
.dropdown_menu_list_show a{
display: block;
text-align:left;
color:#aaa;
line-height: 25px;
padding:0 10px 0 20px;
/*border-bottom: 1px dashed #bbb;*/
}
.dropdown_menu_list a:nth-child(2),
.dropdown_menu_list a:nth-child(3),
.dropdown_menu_list a:nth-child(5),
.dropdown_menu_list a:nth-child(6),
.dropdown_menu_list a:nth-child(8),
.dropdown_menu_list a:nth-child(9){
border-bottom: 1px dashed #bbb;
}
.dropdown_menu_list_show a:nth-child(2),
.dropdown_menu_list_show a:nth-child(3),
.dropdown_menu_list_show a:nth-child(5),
.dropdown_menu_list_show a:nth-child(6),
.dropdown_menu_list_show a:nth-child(8),
.dropdown_menu_list_show a:nth-child(9){
border-bottom: 1px dashed #bbb;
}
.dropdown_menu_list_show{
width:150px;
font-size:10px;
background-color: white;
border:1px solid rgb(251,116,3);
/*这一句可以把下拉菜单隐藏起来*/
/*display:none;*/
padding:10px 10px 0 10px;
position:absolute;
right:140px;
z-index:1;
}
/*-----------------------主体部分-----------------------*/
.main .main_title{
width:1200px;
margin:auto;
line-height: 30px;
}
.main .main_title span{
color:#aaa;
}
.main_wrap{
width:1200px;
height:500px;
border:1px solid rgb(251,116,3);
border-radius:5px 5px;
margin:auto;
}
.main_wrap .info span .input_form{
width:100px;/*这个好像没用*/
}
.info .info_title{
line-height: 30px;
background-color: rgb(251,116,3);
border-radius:5px 5px;
color:white;
text-indent:10px;
}
.info .info_detail{
width:800px;
/*border:1px solid green;*/
margin:50px 0 0 250px;
line-height:30px;
}
.info .info_detail .info_option{
width:60px;
text-align: justify;
/*border:1px solid red;*/
}
.info .info_detail .star{
color:rgb(251,116,3);
margin-right:5px;
}
.info .info_detail .policy{
margin-left:100px;
/*border:1px solid blue;*/
}
.info .info_detail .policy button{
margin:40px 0 0 30px;
padding:8px 50px;
background-color:rgb(251,116,3);
border:none;
color:white;
border-radius:5px 5px;
cursor: pointer;
}
.info .info_detail .policy .railway_policy{
color:rgb(36,135,201);
cursor: pointer;
}
/*密码强度标识*/
.safe1,
.safe2,
.safe3{
width:20px;
height:5px;
background-color:#ccc;
display:inline-block;
}
/*.safe2_show{
background-color:orange;
}
.safe3_show{
background-color:green;
}*/
/*是否符合要求的提示信息*/
.check_result{
font-size:14px;
}
/*-----------------------底部-----------------------*/
footer{
background-color: #ccc;
width:100%;
height:100px;
border-top: 2px solid rgb(36,135,201);
position:fixed;
bottom:0px;
text-align: center;
line-height:30px;
padding-top: 20px;
}1回答
同学你好,因为密码满足后两个强度规则的同时,也满足了第一个密码强度,所以永远在执行第一个else..if判断。

一个if..else if...else判断中,当执行了其中一个条件,其他的就不会执行了。建议如下修改:
拆分成两个if判断,一个用来判断密码是否符合规则,一个用来判断密码强度去控制进度条颜色

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题