3-10作业,最后“下一步”按钮触发事件为什么响应失败。好像重新刷新一样
来源:3-10 作业题
敲着敲着
2019-11-12 20:34:07
//获取元素的 var ele={ myImooc:document.querySelector(".myImooc"), imooc_list:document.getElementById("imooc_list"), user:document.getElementById("user"), userpass:document.getElementById("userpass"), confirm:document.getElementById("confirm"), chinaname:document.getElementById("chinaname"), cert:document.getElementById("cert"), id_number:document.getElementById("id_number"), email:document.getElementById("email"), phonenumber:document.getElementById("phonenumber"), passengers:document.getElementById("passengers"), read:document.getElementById("read"), next:document.getElementById("next"), prompt:document.querySelectorAll(".prompt"),//表单检验提示节点 pass_val:document.querySelector(".pass_val"),//密码验证节点 nameset:document.querySelector(".nameset"), nameset_text:document.querySelector(".nameset_text") } //正则集合对象 var formRegexp={ user:/^[a-z]\w{5,29}$/i, userpass1:/^[a-z]{6,20}$|[0-9]{6,20}$|[~!@#$%&*+?-_]{6,20}$/i, userpass2:/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,20}$|^(?=.*[A-Za-z])(?=.*[~!@#$%&*+_?])[A-Za-z~!@#$%&*+_?]{6,20}$|^(?=.*[~!@#$%&*+_?])(?=.*\d)[~!@#$%&*+_?\d]{6,20}$/, userpass3:/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%&*+?-_])[A-Za-z0-9~!@#$%&*+?_-]{6,20}$/, chinaname:/^[\u4e00-\u9fa5]{2,15}$|^[a-z]{3,30}$/i, id_number:/^\d{17}([xX]|\d)$/, email:/^[a-z0-9-_]+@[a-z0-9-_]+\.[a-z0-9-_]{2,}$/i, phonenumber:/^(13)[0-9]{9}$/ } //验证开关 var text1=false, text2=false, test3=false, test4=false, test5=false, test6=false, test7=false; //用自执行封装 (function(){ //导航imooc绑定事件 ele.myImooc.addEventListener("mouseover",function(){ ele.imooc_list.style.display="block"; console.log(ele.myImooc.after); }) ele.myImooc.addEventListener("mouseout",function(){ ele.imooc_list.style.display="none"; }) //表单绑定事件 ele.user.addEventListener("blur",function(){ if(formRegexp.user.test(ele.user.value)){ ele.prompt[0].innerHTML="用户名输入正确" ele.prompt[0].style.color="green"; text1=true; }else{ ele.prompt[0].style.color="red"; } }) ele.userpass.addEventListener("blur",function(){ console.log(formRegexp.userpass2.exec(ele.userpass.value)); console.log(ele.pass_val.children[1]); if(ele.userpass.value==""){ ele.prompt[1].innerHTML="6-20位字母,数字或符号" ele.prompt[1].style.color="red"; }else if(formRegexp.userpass1.test(ele.userpass.value)){ ele.prompt[1].innerHTML=""; text2=true; }else if(formRegexp.userpass2.test(ele.userpass.value)){ ele.pass_val.children[1].style.background="orange"; ele.pass_val.children[2].style.background="gray"; ele.prompt[1].innerHTML=""; text2=true; }else if(formRegexp.userpass3.test(ele.userpass.value)){ ele.pass_val.children[1].style.background="orange"; ele.pass_val.children[2].style.background="green"; ele.prompt[1].innerHTML=""; text2=true; } }) ele.confirm.addEventListener("blur",function(){ if(ele.confirm.value==""){ ele.prompt[2].innerHTML="输入框不能为空"; ele.prompt[2].style.color="red"; }else if(ele.confirm.value==ele.userpass.value){ ele.prompt[2].innerHTML="两次输入一致"; ele.prompt[2].style.color="green"; text3=true; }else if(ele.confirm.value!=ele.userpass.value){ ele.prompt[2].innerHTML="两次密码输入不一致,请重新输入"; ele.prompt[2].style.color="red"; } }) ele.chinaname.addEventListener("blur",function(){ if(!formRegexp.chinaname.test(ele.chinaname.value)){ ele.prompt[3].innerHTML="姓名只能包含中文或者英文,且中文字符在2-15之间,英文字符在3-30个之间"; ele.prompt[3].style.color="red"; }else{ ele.prompt[3].innerHTML="姓名输入正确"; ele.prompt[3].style.color="green"; text4=true; } }) ele.id_number.addEventListener("blur",function(){ if(ele.id_number==""){ ele.prompt[5].innerHTML="证件号码不能为空"; ele.prompt[5].style.color="red"; }else if(!formRegexp.id_number.test(ele.id_number.value)){ ele.prompt[5].innerHTML="请输入18位证件号码"; ele.prompt[5].style.color="red"; }else{ ele.prompt[5].innerHTML="证件号码正确"; ele.prompt[5].style.color="green"; text5=true; } }) ele.email.addEventListener("blur",function(){ if(ele.email.value==""){ ele.prompt[6].innerHTML="邮箱地址不能为空"; ele.prompt[6].style.color="red"; }else if(!formRegexp.email.test(ele.email.value)){ ele.prompt[6].innerHTML="请输入有效邮箱地址"; ele.prompt[6].style.color="red"; }else{ ele.prompt[6].innerHTML="邮箱格式正确"; ele.prompt[6].style.color="green"; text6=true; } }) ele.phonenumber.addEventListener("blur",function(){ if(ele.phonenumber.value==""){ ele.prompt[7].innerHTML="手机号码不能为空"; ele.prompt[7].style.color="red"; }else if(!formRegexp.phonenumber.test(ele.phonenumber.value)){ ele.prompt[7].innerHTML="请输入有效手机号码"; ele.prompt[7].style.color="red"; }else{ ele.prompt[7].innerHTML="手机格式正确"; ele.prompt[7].style.color="green"; test7=true; } }) //姓名规则绑定事件 ele.nameset.addEventListener("click",function(){ ele.nameset_text.style.display="block"; }) ele.nameset_text.addEventListener("mouseout",function(){ ele.nameset_text.style.display="none"; }) //read开关 ele.read.addEventListener("change",function(){ if(ele.read.checked==true){ ele.next.disabled=false; ele.next.className="next1"; }else{ ele.next.disabled=true; ele.next.className="next2"; } }) //next事件 var arr=[]; ele.next.addEventListener("click",function(){ if(text1&&text2&&text3&&text4&&text5&&text6&&text7){ arr.push(ele.user.value).push(ele.userpass.value).push(ele.chinaname.value).push(ele.cert.value).push(ele.id_number.value).push(ele.email.value).push(ele.phonenumber.value).push(ele.passengers.value); return window.location.href="http://www.imooc.com"; }else{ alert("输入有误"); } }) console.log(arr); })()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>中国铁路客服中心</title> <link rel="stylesheet" href="css/csstext.css"> </head> <body> <div class="top"> <div class="logo"><img src="img/logo.png" alt="logo"><p>慕课高铁客户服务中心|<span>客户服务</span></p></div> <div class="login"> 意见反馈<a href="#">imooc@com</a> 你好,请<a href="#">登录</a>|<a class="registered" href="#">注册</a> <span class="myImooc">我的IMOOC <div id="imooc_list"> <ul> <li>未完成订单</li> <li>已完成订单(改/退)</li> <li>我的保险</li> <li>查看个人信息</li> <li>账户安全</li> <li>常用联系人</li> <li>重点旅客预定</li> <li>遗失物品查找</li> <li>服务查询</li> <li>投诉</li> <li>建议</li> </ul> </div> </span> <span><img src="img/未标题-1.png" alt="">手机版</span> </div> </div> <div class="main"> <div class="loginViev"> <p>你现在的位置:<span>客运首页>注册</span></p> <div class="loginform"> <div>账户信息</div> <form id="form"> <table> <tr> <td width="70px" align="right">用户名:</td> <td width="207px"><input type="text" class="input" name="" id="user" placeholder="用户设置成功后不能修改"></td> <td><span class="prompt">6-30位字母,数字或符合</span></td> </tr> <tr> <td align="right">登录密码:</td> <td><input type="password" class="input" name="" id="userpass" placeholder="6-20位数字,字母或符合"><p class="prompt"></p></td> <td> <div class="pass_val"> <div></div> <div></div> <div></div> <div></div> </div> </td> </tr> <tr> <td align="right">确认密码:</td> <td><input type="password" class="input" name="" id="confirm" placeholder="再次输入你的登录密码"></td> <td><span class="prompt"></span></td> </tr> <tr> <td align="right">姓名:</td> <td><input type="text" class="input" name="" id="chinaname" placeholder="请输入姓名"></td> <td> <span class="prompt nameset">姓名填写规则 <div class="nameset_text"> <p>1.确认姓名中生僻字无法输入时,可用生僻字拼音或同音字替代。</p> <p>2.输入姓名保存后,遇有系统无法正确显示的汉字,可用该汉字的拼音或同音字重新修改后保存。</p> <p>3.姓名中有繁体字无法输入时,可用简体替代。</p> <p>4.姓名较长,汉字与英文字符合计超过30个(1个汉字算2个字符)的,需按姓名中第一个汉字或英文字符开始按顺序连续输入30个字符(空格字符不输入),其中英文字符输入时不区别大小写</p> </div> </span> </td> </tr> <tr> <td align="right">证件类型:</td> <td> <select name="" id="cert"> <option value="china_id">二代身份证</option> <option value="hk_id">港澳通行证</option> <option value="driver">台湾通行证</option> <option value="passport">护照</option> </select> </td> <td><span class="prompt"></span></td> </tr> <tr> <td align="right">证件号码:</td> <td><input type="text" class="input" name="" id="id_number" placeholder="请输入你的证件号码"></td> <td><span class="prompt"></span></td> </tr> <tr> <td align="right">邮箱:</td> <td><input type="text" class="input" name="" id="email" placeholder="请正确填写邮箱地址"></td> <td><span class="prompt"></span></td> </tr> <tr> <td align="right">手机号码:</td> <td><input type="text" class="input" name="" id="phonenumber" placeholder="请输入你的手机号码"></td> <td><span class="prompt">请正确填写手机号码,稍后将向该手机号码发送短信验证码</span></td> </tr> <tr> <td align="right">旅客类型</td> <td> <select name="" id="passengers"> <option value="adult">成人</option> <option value="studen">学生</option> <option value="children">儿童</option> <option value="handicapped_militiry">残疾军人</option> <option value="handicapped_police">伤残人民警察</option> </select> </td> <td><span class="prompt"></span></td> </tr> <tr> <td></td> <td colspan="2"> <input type="checkbox" name="" id="read">我已阅读并遵 <a href="#">《中国铁路客户服务中心网站服务条款》</a> </td> </tr> </table> <button class="next2" id="next" disabled>下一步</button> </form> </div> </div> </div> <div class="bottom"> <p>关于我们|网站声明</p> <p>copyright @ 2017 imooc.com All Rights Reserved | 京ICP备13046642号-2</p> </div> <script src="javascript/from.js"></script> </body> </html>
3回答
好帮手慕粉
2019-11-13
同学你好,关于同学的问题解答如下:
1、点击下一步的时候,页面其实发生了表单提交,不是重新刷新,我们可以对比下提交前后的网页地址:
提交前:
点击“下一步”之后:
会发现最后多了一个问号,其实这是表单的默认跳转行为。因为“下一步”是一个button按钮,就相当于submit,当点击的时候,它是会有表单的提交功能的,所以当点击以后,执行的就是表单的跳转,而不是同学设置的window.location.href = "http://www.imooc.com"这段代码,因为表单里没有action,即表单提交成功的页面,所以看着就好像页面重新刷新了一样。建议同学给button按钮设置type="button",设置成普通按钮,当点击的时候,就不会执行表单的提交,而是地址的跳转了。
参考:
2、同学在设置跳转的条件时,单词拼错了,同学定义的是test,而条件里面写的都是text,看同学的代码大部分都是text,我们就以text为基准进行修改。参考:
3、在向数组中添加元素时,不能使用arr.push().push().push().....方法,语法是不正确的,如果要在后面追加,要一个一个的来,例:
其余的同学自己修改一下。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
好帮手慕粉
2019-11-13
同学你好,用for循环就可以实现。参考以下代码:
老师只是给同学提供了一个思路哦,剩下的同学自己尝试着实现一下。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
敲着敲着
提问者
2019-11-13
谢谢指点,像提交数组,有没有遍历方法
相似问题