老师帮忙检查一下代码
来源:4-8 编程练习
陈立天
2020-03-04 18:20:31
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>pratice</title> <link rel="stylesheet" type="text/css" href="./pratice.css"> </head> <body> <div class="wrap"> <div class="header__box"> <p class="header-inner">用户注册</p> </div> <table class="table"> <tr> <td class="left">用户名:</td> <td class="middle"><input type="text" name="userName" id="userName"></td> <td class="right"><div class="tips"></div></td> </tr> <td class="left">登录密码:</td> <td class="middle"><input type="password" name="pwd" id="pwd"></td> <td class="right"><div class="tips"></div></td> </tr> <td class="left">确认密码:</td> <td class="middle"><input type="password" name="cfPwd" id="cfPwd"></td> <td class="right"><div class="tips"></div></td> </tr> <tr> <td class="left">姓名:</td> <td class="middle"><input type="text" name="name" id="fullname"></td> <td class="right"><div class="tips"></div></td> </tr> <tr> <td class="left">性别:</td> <td class="middle"> <select class="option" id="sex"> <option>男</option> <option>女</option> </select> </td> </tr> <tr> <td class="left">身份证号码:</td> <td class="middle"><input type="text" name="idNumber" id="idNumber"></td> <td class="right"><div class="tips"></div></td> </tr> <tr> <td class="left">邮箱:</td> <td class="middle"><input type="email" name="email" id="email"></td> <td class="right"><div class="tips"></div></td> </tr> <tr> <td class="left">手机号码:</td> <td class="middle"><input type="text" name="phoneNumber" id="phoneNumber"></td> <td class="right"><div class="tips"></div></td> </tr> <tr> <tr> <td colspan="3"><input type="submit" class="btn" id="subbtn"></td> </tr> </table> </div> <script type="text/javascript" src="./pratice.js"></script> </body> </html>
// 封装一个获取ID元素函数 function getElmById(id){ return document.getElementById(id); } // 获取所有元素 var userName=getElmById('userName'); var pwd=getElmById('pwd'); var cfPwd=getElmById('cfPwd'); var fullname=getElmById('fullname'); var idNumber=getElmById('idNumber'); var sex=getElmById('sex'); var email=getElmById('email'); var phoneNumber=getElmById('phoneNumber'); var subbtn=getElmById('subbtn') var tips=document.getElementsByClassName('tips'); // 初始化表单 isTrue0=false, isTrue1=false, isTrue2=false, isTrue3=false, isTrue4=false, isTrue5=false, isTrue6=false; //用户名正则验证,6-20位字母、数字或“_”,字母开头 userName.onblur=function(){ var pattern=/^\w{6,20}$/; if(this.value==""){ tips[0].innerHTML="6-20位字母、数字或“_”,字母开头"; isTrue0=false; }else{ if(this.value.match(pattern)){ tips[0].innerHTML="ok"; isTrue0=true; }else{ tips[0].innerHTML="6-20位字母、数字或“_”,字母开头"; isTrue0=false; } } } //密码正则验证,数字、字母或符号,中间不能有空格---6-18位,包含数字、字母、符号 pwd.onblur=function(){ var pattern=/^[^\s]{6,18}$/; if(this.value==""){ tips[1].innerHTML="6-18位,数字、字母或符号,中间不能有空格"; isTrue1=false; }else{ if(this.value.match(pattern)){ tips[1].innerHTML="ok"; isTrue1=true; }else{ tips[1].innerHTML="6-18位,数字、字母或符号,中间不能有空格"; isTrue1=false; } } } //请设置密码---请确认密码 cfPwd.onblur=function(){ if(isTrue1){ if(this.value==pwd.value){ tips[2].innerHTML="ok"; isTrue2=true; }else{ tips[2].innerHTML="两次输入密码不一致"; isTrue2=false; } }else{ tips[2].innerHTML=""; isTrue2=false; } } //两位到四位的中文---真实姓名为两位到四位的中文 fullname.onblur=function(){ var pattern=/^[\u4e00-\u9fa5]{2,4}$/; if(this.value==""){ tips[3].innerHTML="两位到四位的中文"; isTrue3=false; }else{ if(this.value.match(pattern)){ tips[3].innerHTML="ok"; isTrue3=true; }else{ tips[3].innerHTML="真实姓名为两位到四位的中文"; isTrue3=false; } } } //请输入18位的身份证号码 idNumber.onblur=function(){ var pattern=/^[\d]{15}$|^[\d]{17}[\dxX]$/; if(this.value==""){ tips[4].innerHTML="请输入身份证号码"; isTrue4=false; }else{ if(this.value.match(pattern)){ tips[4].innerHTML="ok"; isTrue4=true; }else{ tips[4].innerHTML="请输入15位或18位的身份证号码"; isTrue4=false; } } } //邮箱格式不正确 email.onblur=function(){ var pattern=/^\w+@(?:[\w+\.]+)+(?:[a-z]{2,})$/; if(this.value==""){ tips[5].innerHTML="请输入邮箱" isTrue5=false; }else{ if(this.value.match(pattern)){ tips[5].innerHTML="ok"; isTrue5=true; }else{ tips[5].innerHTML="邮箱格式不正确" isTrue5=false; } } } //邮箱格式不正确 phoneNumber.onblur=function(){ var pattern=/^[\d]{11}$/; if(this.value==""){ tips[6].innerHTML="请输入电话号码" isTrue6=false; }else{ if(this.value.match(pattern)){ tips[6].innerHTML="ok"; isTrue6=true; }else{ tips[6].innerHTML="电话号码不正确" isTrue6=false; } } } // //提交按钮验证 subbtn.onclick=function(){ if(isTrue0 && isTrue1 && isTrue2 && isTrue3 && isTrue4 && isTrue5 && isTrue6){ alert('验证成功'); } }
*{ padding: 0; margin: 0; } .wrap{ width: 800px; height: 500px; background-color: #eee; margin: 0 auto; } .header__box{ width: 800px; height: 40px; background-color: #00bfff; color: #fff; text-indent: 20px; line-height: 40px; } .table{ width: 100%; text-align: center; margin-top: 50px; } .left{ width: 280px; text-align: right; } .middle{ width: 180px; text-align: left; } .right{ width: 0px; font-size: 12px; /*background-color: blue;*/ text-align: left; color: red; } tr{ height: 35px; } .option{ width: 165px; } .btn{ width: 80px; height: 30px; background-color: #2fafda; border-radius: 7px; }
2回答
好帮手慕夭夭
2020-03-04
同学你好,用户名开头不是首字母也验证成功了:
开头应该是字母,规则参考如下修改:
另外,这里用循环也并不会简化代码。这里老师提供另一个一个思路:
定义一个数组arr,里面放7个元素,元素默认都是false 。当验证第一个规则时,可以通过arr[0]获取第一个元素。例如用户名验证正确,那么就设置arr[0]=true 。通过这种数组的形式,就不用定义那么多变量了。然后在添加按钮事件中,检测数组中是否含有false即可。不过同学的这种方式就可以了,本题的效果本身就是比较复杂,没有特别省事的办法。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
陈立天
提问者
2020-03-04
有没有还需要优化的地方?
还有就是这里:
isTrue0=false,
isTrue1=false,
isTrue2=false,
isTrue3=false,
isTrue4=false,
isTrue5=false,
isTrue6=false;
能不能用循环来写?? 那要怎么写?
相似问题