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

本文通过实例展示如何优化表单的用户体验,包括密码强度实时反馈、表单验证、错误提示及解锁机制等,旨在提升用户填写表单的便捷性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表单的用户体验改善

<!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>
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值