JavaScript正则改善表单的用户体验改善

表单的用户体验改善

<!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"  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" select="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" cass="like"/>
      上网:<input type="checkbox" name="like" value="2" cass="like"/>
      逛街:<input type="checkbox" name="like" value="3" cass="like"/>
      看电影:<input type="checkbox" name="like" value="4" cass="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>
<script>
    var eg={};//声明一个对象,当做命名空间来使用,本书默认的范例都会以此来方便管理
    //定义一个公共函数来获取指定id元素,减少代码量,提高代码复用率
    eg.$=function(id){
        return document.getElementById(id);
    };
    eg.getElementsByClassName=function(className,element){
        if(document.getElementsByClassName){
            return (element||document).getElementsByClassName(className)
        }
        var children=(element||document).getElementsByTagName('*');
        var elements=new Array();
        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.$("userpwd");
        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(upwd.value!=upwd2.value){
            alert('两次密码输入不同!');
            upwd.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=document.getElementsByClassName("like");
        var likeNum=0;
        for(var n=0;n<likes.length;n++){
            if(likes[n].checked){
                likeNum++;
            }
        }
        if(likeNum==0){
            alert('请至少选择一个爱好!');
            eg.err();
            return false;
        }
        //邮箱验证
        var email=eg.$("email");
        if(!new  RegExp("^[a-z\\d]+[\\w\\-\.]*@([a-z\\d]+[a-z\\d\\-]*\.)+[a-z]{2,4}$","i").test(email.value)){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;      //返回true就会提交表单form
    };
        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;
                }
               else if(pwd.value.length<4){
                    lv=0;
                }
                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";
        //元素所有样式都挂载到style属性下
    }
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值