请老师帮忙看看,确认密码时哪里有问题,谢谢

来源:2-25 项目作业

慕神3111110

2021-07-17 17:56:21

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>注册功能</title>

<style>

form{

position: relative;

width: 1000px;

height: 500px;

margin:100px auto;

border: 3px solid rgba(255, 230, 0, 0.479);

}

p{

position: relative;

margin-left: 50px;

font-size: 20px;

}

input{

width: 300px;

height: 40px;

}

.btn{

position: relative;

width: 370px;

height: 50px;

left:170px;

color: white;font-size: 30px;

background-color: orange;

border: none;

border-radius: 3px;

}

.passwarning{

display: inline-block;

position: relative;

left:20px;

width: 40px;height: 10px;

background-color: #eee;

}

</style>

</head>

<body>

<form action="">

<p>

<span>*</span>&ensp;用&ensp;户&ensp;名 :

<input type="text" placeholder="用户名设置成功后不可更改" id="nameField">

<span id="namewarning"></span>

</p>

<p>

<span>*</span>&ensp;登陆密码 :

<input type="text" placeholder="6-20位字母或数字" id="passfield">

<span  id="passwarning1"></span>

<span class="passwarning" id="passwarning2"></span>

<span class="passwarning" id="passwarning3"></span>

<span class="passwarning" id="passwarning4"></span>

</p>

<p>

<span>*</span>&ensp;确认密码 :

<input type="text" placeholder="再次输入您的登陆密码" id="passaginfield">

<span id="passagainwarning"></span>

</p>

<input type="submit" value="注册"  class="btn" id="btn">

</form>

<script>

// 用户名

var nameField=document.getElementById("nameField");

var namewarning=document.getElementById("namewarning")

nameField.onblur=function(){

var name=nameField.value;

if( /^[a-zA-Z]\w{5,29}$/.test(name)){

namewarning.innerText="用户名输入正确"

namewarning.style.color="green"

}else{

namewarning.innerText="6-30位字母、数字或’_’,字母开头";

namewarning.style.color="red"

}

}

// 密码

var passfield=document.getElementById("passfield");

var passwarning1=document.getElementById("passwarning1")

var passwarning2=document.getElementById("passwarning2")

var passwarning3=document.getElementById("passwarning3")

var passwarning4=document.getElementById("passwarning4")

passfield.onblur=function(){

var pass=passfield.value;

if(/^[a-z0-9A-Z]{6,20}$/.test(pass)){

if(/^[0-9]{6,20}$|^[a-z]{6,20}$|^[A-Z]{6,20}$/.test(pass)){

passwarning2.style.backgroundColor="red"

}else if (/^[0-9a-z]{6,20}$|^[0-9A-Z]{6,20}$|^[A-Za-z]{6,20}$/.test(pass)){

passwarning2.style.backgroundColor="red"

passwarning3.style.backgroundColor="red"

} else {

passwarning2.style.backgroundColor="red"

passwarning3.style.backgroundColor="red"

passwarning4.style.backgroundColor="red"

}

}else{


passwarning1.innerText="密码为6-20位字母或数字";

passwarning1.style.color="red"

passwarning2.style.display="none"

passwarning3.style.display="none"

passwarning4.style.display="none"

}

}


//  确认密码

var passagainfield=document.getElementById("passagainfield");

var passagainwarning=document.getElementById("passagainwarning");

// ???

passagainfield.onblur=function(){

var passagin=passagainfield.value;

if(passagin==null){

passagainwarning.innerText="输入框不能为空"

passagainwarning.style.color="red"

}

else if (passagin==pass){

passagainwarning.innerText="两次密码输入不一致,请重新输入"

passagainwarning.style.color="red"


}

else if(passagin==pass){

passagainwarning.innerText="两次输入一致"

}

}


var btn=document.getElementById("btn");

btn.onclick=function(){

if (namewarning.style.color="green"&&/^[a-z0-9A-Z]{6,20}$/.test(pass)&&pass==passagin){

alert("信息填写正确");

}else{

alert("填写正确的信息")

}

}

</script>

</body>

</html>


写回答

1回答

好帮手慕星星

2021-07-17

同学你好,代码问题如下:

1、提交按钮用的是submit,不论是否验证成功,都会被提交,效果不对。建议换为普通按钮button

http://img.mukewang.com/climg/60f2bbe509f1776407820089.jpg

2、pass和passagin变量在函数内部定义的是局部的,但是在其它函数中有使用这两个变量,导致报错。建议修改为全局的

http://img.mukewang.com/climg/60f2bc4809a9402c04440119.jpg

http://img.mukewang.com/climg/60f2bc5809eb5c5405740149.jpg

3、密码验证处,如果一开始输入错误,提示信息显示,三条颜色线隐藏。但是当再次输入正确的时候,三条颜色线没有设置样式显示出来,建议手动设置显示,并且建议在每个判断后面都设置三条线的颜色,避免回删的时候,短线颜色不对

 var pass;
      passfield.onblur = function () {
        // var pass = passfield.value;
        pass = passfield.value;

        if (/^[a-z0-9A-Z]{6,20}$/.test(pass)) {
          passwarning1.style.display = "none";

          passwarning2.style.display = "inline-block";

          passwarning3.style.display = "inline-block";

          passwarning4.style.display = "inline-block";
          if (/^[0-9]{6,20}$|^[a-z]{6,20}$|^[A-Z]{6,20}$/.test(pass)) {
            passwarning2.style.backgroundColor = "red";
            passwarning3.style.backgroundColor = "#eee";
            passwarning4.style.backgroundColor = "#eee";
          } else if (
            /^[0-9a-z]{6,20}$|^[0-9A-Z]{6,20}$|^[A-Za-z]{6,20}$/.test(pass)
          ) {
            passwarning2.style.backgroundColor = "red";
            // passwarning3.style.backgroundColor = "red";
            passwarning3.style.backgroundColor = "orange";
            passwarning4.style.backgroundColor = "#eee";
          } else {
            passwarning2.style.backgroundColor = "red";

            // passwarning3.style.backgroundColor = "red";
            passwarning3.style.backgroundColor = "orange";

            // passwarning4.style.backgroundColor = "red";
            passwarning4.style.backgroundColor = "green";
          }
        } else {
          passwarning1.style.display = "inline-block";

          passwarning1.innerText = "密码为6-20位字母或数字";

          passwarning1.style.color = "red";

          passwarning2.style.display = "none";

          passwarning3.style.display = "none";

          passwarning4.style.display = "none";
        }
      };

4、确认密码处获取元素不对,id值写错了,参考修改

http://img.mukewang.com/climg/60f2bd0e09b10b1307950103.jpg

另外判断的不对,缺少两个值不相等以及为空的情况,可以添加上

http://img.mukewang.com/climg/60f2bd5b09deca0e07420568.jpg

自己再测试下,祝学习愉快!

0

0 学习 · 15276 问题

查看课程