2017ife_yaoyao学院_task2

2017ife_yaoyao学院_task2

  • 任务:

    表单(二)多个表单项的动态校验

  • 任务目的

    加强对JavaScript的掌握
    熟悉常用表单处理逻辑

  • 任务描述

    如示例图中所示,基于上一个任务(任务29),在页面中添加多个表单

    要求:
    1.表单获得焦点时,下方显示表单填写规则
    2.表单失去焦点时校验表单内容
    3.校验结果正确时,表单边框显示绿色,并在下方显示验证通过的描述文字
    4.校验结果错误时,表单边框显示红色,并在下方显示验证错误的描述文字
    5.点击提交按钮时,对页面中所有输入进行校验,校验结果显示方式同上。若所有表单校验通过,弹窗显示“提交成功”,否则显示“提交失败”

  • 任务注意事项

    要求功能实现与任务描述中完全一致
    示例图仅为参考,样式不需要完全实现一致
    请注意代码风格的整齐、优雅
    代码中含有必要的注释
    不允许借助任何第三方组件库实现

  • 相关知识点:

    1.统一每个部分中init,error1,error2,correct的样式
    把css中的id改为类

    2.用classname来查找元素以及使用

        var e_init=document.getElementsByClassName("init "+e_name);//寻找元素的某种方法
        e_init[0].style.display="table-row";
    

    3.每一个input设置onfocus和onblur,并传入此element

        <input type="text" name="username" id="username" size=40px onfocus="init(this)" onblur="check(this)"/><!--this,指代特定元素-->
    

    4.邮箱格式使用正则表达式确认

              var rule1=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
              if (!rule1.test(text)){
                  someword here;
              }
    

    5.使用数组进行每一个部分的flag的确认

    var arr=new Array(0,0,0,0,0);
    

    6.填密码的时候要将确认密码一栏清空

            else if(e_name=="password")
            {
              document.getElementById("confirm").value="";
            }
    
  • 代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>yaoyao-task1</title>
    <style>
        form{
            margin-left:50px;
            margin-top:50px;
        }
        label{
            font-size:18px;
            font-weight:bold;
        }
        input{
            height:30px;/*更改input的高度*/
            border-radius:8px;
            border:1px #999 solid;
        }
        #button{
            background-color:blue;
            color:white;
            border:1px blue solid;
            border-radius:4px;
            height:34px;
            font-size:18px;
            width:80px;
            float:right;
        }
        td{
            padding-top:10px;
        }
        /*提示部分*/
        .init{
            font-size:14px;
            color:#999;
            display:none;
        }
        .error1{
            font-size:14px;
            color:red;
            display:none;
        }
        .error2{
            font-size:14px;
            color:red;
            display:none;
        }
        .correct{
            font-size:14px;
            color:green;
            display:none;
        }
    </style>
    <script>
        var user_password="";//全局变量
        var arr=new Array(0,0,0,0,0);
        function init(e){       
            var e_name=e.name;
            console.log(e_name);
            var e_init=document.getElementsByClassName("init "+e_name);//寻找元素的某种方法
            var e_error1=document.getElementsByClassName("error1 "+e_name);
            var e_error2=document.getElementsByClassName("error2 "+e_name);
            var e_correct=document.getElementsByClassName("correct "+e_name);
            console.log(e_init);
            e_init[0].style.display="table-row";
            e_error2[0].style.display="none";
            e_error1[0].style.display="none";
            e_correct[0].style.display="none";
        }
        function check(e){
            var e_name=e.name;
            console.log(e_name);
            var e_init=document.getElementsByClassName("init "+e_name);
            var e_error1=document.getElementsByClassName("error1 "+e_name);
            var e_error2=document.getElementsByClassName("error2 "+e_name);
            var e_correct=document.getElementsByClassName("correct "+e_name);
            var text=e.value;
            console.log(text);
            var sum=0;//存放长度
            if(text=="")
            {
                e_error2[0].style.display="table-row";
                e_init[0].style.display="none";
                e_error1[0].style.display="none";
                e_correct[0].style.display="none";
            }
            else
            {
                //username
                if(e_name=="username")
                {
                  for(var i=0; i<text.length;i++)
                  {
                    if(text.charCodeAt(i)>256)//是中文
                    {
                        sum=sum+2;
                    }
                    else
                    {
                        sum=sum+1;
                    }
                  }
                  console.log(sum);
                  if(sum<4||sum>16)
                  {
                    e_error1[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_correct[0].style.display="none";
                  }
                  else
                  {
                    e_correct[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_error1[0].style.display="none";
                    arr[0]=1;
                 }
                }
                else if(e_name=="password")
                {
                  document.getElementById("confirm").value="";
                  user_password=text;
                  if(text.length<6)
                  {
                    e_error1[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_correct[0].style.display="none";                  
                  }
                  else
                  {
                    e_correct[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_error1[0].style.display="none";
                    arr[1]=1;
                  }
                }
                else if(e_name=="confirm")
                {
                  if(text!=user_password)
                  {
                    e_error1[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_correct[0].style.display="none";                  
                  }
                  else
                  {
                    e_correct[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_error1[0].style.display="none";   
                    arr[2]=1;                   
                  }
                }
                else if(e_name=="email")
                {
                  var rule1=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
                  if (!rule1.test(text)){
                    e_error1[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_correct[0].style.display="none";
                  }
                  else
                  {
                    e_correct[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_error1[0].style.display="none";
                    arr[3]=1;                   
                  }
                }
                else//phone
                {
                  if(text.length!=11)
                  {
                    e_error1[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_correct[0].style.display="none";                
                  }
                  else
                  {
                    e_correct[0].style.display="table-row";
                    e_init[0].style.display="none";
                    e_error2[0].style.display="none";
                    e_error1[0].style.display="none";
                    arr[4]=1;                   
                  }
                }               
            }
        }
        function checkresult()
        {
            var flag=1;
            for(var i=0; i<5; i++)
            {
               if(arr[i]!=1)
               {
                 flag=0;
               }
            }
            if(flag==1)
                alert("提交成功");
            else
                alert("提交失败");
        }
    </script>
</head>
<body>
    <form>
        <table>
        <!--姓名-->

        <tr>
          <td>
            <label>名称&nbsp;&nbsp;</label>
          </td>
          <td>
            <input type="text" name="username" id="username" size=40px onfocus="init(this)" onblur="check(this)"/><!--this,指代特定元素-->
          </td>
        </tr>
        <tr class="init username">
          <td></td>
          <td>
            <span>必填,长度为4~16个字符</span>
          </td>
        </tr>
        <tr class="error1 username">
          <td></td>
          <td>
            <span>输入字符长度不正确</span>
          </td>
        </tr>
        <tr class="error2 username">
          <td></td>
          <td>
            <span>姓名不能为空</span>
          </td>
        </tr>
        <tr class="correct username">
          <td></td>
          <td>
            <span>名称格式正确</span>
          </td>
        </tr>

        <!--密码-->
        <tr>
          <td>
            <label>密码&nbsp;&nbsp;</label>
          </td>
          <td>
            <input type="password" name="password" id="password" size=40px onfocus="init(this)" onblur="check(this)"/>
          </td>
        </tr>
        <tr class="init password">
          <td></td>
          <td>
            <span>必填,密码长度应为6位及以上</span>
          </td>
        </tr>
        <tr class="error1 password">
          <td></td>
          <td>
            <span>输入密码长度不正确</span>
          </td>
        </tr>
        <tr class="error2 password">
          <td></td>
          <td>
            <span>密码不能为空</span>
          </td>
        </tr>
        <tr class="correct password">
          <td></td>
          <td>
            <span>密码可用</span>
          </td>
        </tr>

        <!--确认密码-->

        <tr>
          <td>
            <label>密码确认&nbsp;</label>
          </td>
          <td>
            <input type="password" name="confirm" id="confirm" size=40px onfocus="init(this)" onblur="check(this)"/>
          </td>
        </tr>
        <tr class="init confirm">
          <td></td>
          <td>
            <span>再次输入相同密码</span>
          </td>
        </tr>
        <tr class="error1 confirm">
          <td></td>
          <td>
            <span>输入密码不正确,请输入相同密码</span>
          </td>
        </tr>
        <tr class="error2 confirm">
          <td></td>
          <td>
            <span>确认密码不能为空</span>
          </td>
        </tr>
        <tr class="correct confirm">
          <td></td>
          <td>
            <span>密码输入一致</span>
          </td>
        </tr>

        <!--邮箱-->
        <tr>
          <td>
            <label>邮箱&nbsp;&nbsp;</label>
          </td>
          <td>
            <input type="text" name="email" id="email" size=40px onfocus="init(this)" onblur="check(this)"/>
          </td>
        </tr>
        <tr class="init email">
          <td></td>
          <td>
            <span>请输入邮箱,格式为example@example.com</span>
          </td>
        </tr>
        <tr class="error1 email">
          <td></td>
          <td>
            <span>邮箱格式错误</span>
          </td>
        </tr>
        <tr class="error2 email">
          <td></td>
          <td>
            <span>邮箱不能为空</span>
          </td>
        </tr>
        <tr class="correct email">
          <td></td>
          <td>
            <span>邮箱格式正确</span>
          </td>
        </tr>
        <!--手机-->

        <tr>
          <td>
            <label>手机&nbsp;&nbsp;</label>
          </td>
          <td>
            <input type="text" name="phone" id="phone" size=40px onfocus="init(this)" onblur="check(this)"/>
          </td>
        </tr>
        <tr class="init phone">
          <td></td>
          <td>
            <span>请输入11位手机号码</span>
          </td>
        </tr>
        <tr class="error1 phone">
          <td></td>
          <td>
            <span>手机号码输入错误</span>
          </td>
        </tr>
        <tr class="error2 phone">
          <td></td>
          <td>
            <span>手机号码不能为空</span>
          </td>
        </tr>
        <tr class="correct phone">
          <td></td>
          <td>
            <span>手机格式正确</span>
          </td>
        </tr>
        <!--提交按钮-->
        <tr>
            <td></td>
            <td>
                <input type="button" id="button" onclick="checkresult()" value="验证"/>
            </td>
        </tr>
        </table>
    </form>
</body>
</html>
<!--
注意:更换提示的时候应该将tr整行隐藏起来,id设在tr上,且隐藏和显示应采用以下语句
                document.getElementById("error2").style.display="table-row";
                document.getElementById("init").style.display="none";
-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值