html form表单验证和用户体验代码
2017-12-04 00:32
429 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>改善用户体验的表单</title> <style> #pwdLvSpan{display: inline-block; width:100px; height: 5px; background: #c3c3c3; } #pwdLvSpan i{ display: block; background: green; height:5px; width:0; } </style> </head> <body> <form method="post" action="/test/" onsubmit="return eg.regCheck();"> <input type="hidden" name="" id="errnum" value="0"/> 账户:<input type="text" name="" id="userid" /><br/><br/> 密码:<input type="password" name="" id="userpwd" /> 密码强度<span id="pwdLvSpan"><i id="pwdLv"></i></span><br/><br/> 确认: <input type="password" name="" id="userpwd2" /><br/><br/> 性别:<input type="radio" name="sex" value="1" checked="checked"/> 男<input type="radio" name="sex" value="0" />女<br/><br/> 年龄:<select name="" id="age"> <option value="0" selected="selected">请选择年龄段</option> <option value="1">18岁以下</option> <option value="2">18-24岁</option> <option value="3">24-30岁</option> <option value="4">30-35岁</option> <option value="5">35岁以上</option> </select><br/><br/> 爱好:<input type="checkbox" name="like" value="1" class="like" /> 上网<input type="checkbox" name="like" value="2" class="like"> 逛街<input type="checkbox" name="like" value="3" class="like"> 看电影<input type="checkbox" name="like" value="4" class="like">其他<br/><br/> 简介:<textarea name="" rows="4" cols="18" id="about"></textarea><br/><br/> 邮箱: <input type="text" name="" id="email" /> <br/><br/> <input type="submit" value="注册" id="regBtn"> <input type="button" value="解锁" onclick="eg.unlock();" style="display: none;" id="regUnlock" /> </form> </body> <script> // 表单验证 var eg = {}; // 申明一个对象当作命名空间使用 // 定义一个公共函数获取id元素 减少代码量 提高复用率 eg.$ = function (id) { return document.getElementById(id); }; // 定义一个公共函数来获取制定class的名称元素集合,能兼容各浏览器 eg.getElementsByClassName = function (className, element) { if (document.getElementsByClassName){ return (element || document).getElementsByClassName(className) } var children = (element || document).getElementsByTagName('*'); var elements = []; for (var i =0; i <children.length; i++){ var child = children[i]; var classNames = child.className.split(' '); for (var j=0; j < classNames.length; j++){ if (classNames[j] == className){ elements.push(child); break; } } } return elements; }; // 定义一个公共函数解决监听事件兼容问题 eg.addListener = function (target, type, handler) { if (target.addEventListener){ target.addEventListener(type, handler, false); }else if (target.attachEvent) { target.attachEvent("on" + type, handler); }else{ target["on" + type] = handler; } }; // 主要验证方法 eg.regCheck = function () { var uid = eg.$("userid"); var upwd = eg.$("userid"); var upwd2 = eg.$("userpwd2"); if (uid.value == ''){ alert("账户不能为空"); uid.focus(); eg.err(); return false; } if (upwd.value == ''){ alert("密码不能为空"); upwd.focus(); eg.err(); return false; } if (upwd2.value == ''){ alert("两次密码输入不同"); upwd2.focus(); eg.err(); return false; } // 简介长度 var about = eg.$("about"); if (about.value.length>60){ alert("简介太长!"); about.focus(); eg.err(); return false; } // 选择年龄段 var age =eg.$("age"); if(age.value == "0"){ alert("请选择年龄段!"); age.focus(); //让输入框获得焦点 eg.err(); return false; } var likes = eg.getElementsByClassName("like"); var likeNum = 0; for (var n=0;n<likes.length;n++){ console.log(likes .checked); if (likes .checked){ likeNum++; } } if(likeNum==0){ alert("请至少选择一个爱好!"); eg.err(); return false } // 邮箱验证 var email = eg.$("email"); if(!/^[A-Za-z\d]+[A-Za-z\d\-_\.]*@([A-Za-z\d]+[A-Za-z\d]\-]*\.)+[A-Za-z]{2,4}$/.test(email.value)){ alert("请输入正确的邮箱!"); email.focus(); eg.err(); return false; } return true; }; //添加一些交互事件 eg.addEvent = function () { var pwd = eg.$("userpwd"); eg.addListener(pwd, "keyup", function () { var lv = 0; if (/^\d{4,}$/.test(pwd.value)) { lv = 10; } else if (/^\w{4,}$/.test(pwd.value)) { lv = 25; } else if (/^\d\w{4,}$/.test(pwd.value)) { lv = 50; } else if (/^[\d\w~!@#$%\^&*\(\)\-{}\[\]=<>,\.\?\/]{4,}$/.test(pwd.value)) { lv = 100; } else if (pwd.value.length < 6 && pwd.value.length > 3) { lv = 60; } eg.$("pwdLv").style.width = lv + "px"; }); }; eg.addEvent(); // 出错时记录错误次数 eg.err = function () { var el = eg.$("errnum"); var old = el.value; el.value = parseInt(old)+1; eg.lock(); }; eg.lock = function () { var err = eg.$("errnum"); if (parseInt(err.value) >2 ){ eg.$("regBtn").disabled =true; eg.$("regUnlock").style.display="block"; } }; // 解锁 eg.unlock = function () { eg.$("regBtn").disabled = false; eg.$("regUnlock").style.display = "none"; } </script> </html>
相关文章推荐
- jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
- jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
- HTML 的 form 提交之前如何验证数值不为空? 为空的话提示用户并终止提交
- 分别用(Windows/Form/Soap/WebService)实现用户身份验证(含示例代码下载)
- html+js实现form表单多值的验证
- html中接受用户输入的form表单定义方式
- 用户登录与注册表单验证代码
- 国人编写的、超牛的、基于jQuery插件式、监听模式(无侵入)的html页面form表单通用验证框架
- Moss设置表单验证之后,授权的时候找不到Form用户
- javascript Zifa FormValid 0.1表单验证 代码打包下载
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- javascript Zifa FormValid 0.1表单验证 代码打包下载
- 分别用(Windows/Form/Soap/WebService)实现用户身份验证(含示例代码下载)
- 表单验证设计的用户体验基本原则
- 分别用(Windows/Form/Soap/WebService)实现用户身份验证(含示例代码下载)
- javascript面向对象思想做form表单验证 代码很精简哦
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- js验证符合用户体验的网页表单特效
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- 面试题之HTML 的 form 提交之前如何验证数值文本框的内容全 部为数字? 否则的话提示用户并终止提交?