zoukankan      html  css  js  c++  java
  • 用纯javascript和html编写仿淘宝注册页面(带源码)

    本地javascript(纯天然代码)验证,本地验证主要分2部分:

    一、和用户的表单交互

     

      首先需要编写用于表单交互的函数,该函数需要在页面加载时加载,格式如下:window.onload=function (){}

     接着用getElement的方法获取相应的标签在function函数里定义为全局变量。

    然后在function内编写这些变量的事件,用到的三大事件分别为:onfocus(获取焦点事件)、onkeyup(键盘事件)、onblur(失去焦点事件)。

    用法:以onfocus为例如下:

     pwd.onfocus=function(){//变量pwd的获取焦点事件

       pwd_msg.style.display="block";

       pwd_msg.innerHTML='<i class="ati"></i>6-16个字符,请使用字母加数字或符号的组合密码,不能单独使用字母、数字或符号。    ';

    }

    二、点击提交按钮是对表单的检验

    主要用到onsumit(表单提交前)事件,用法如下:

    <form method="post"  action="aupload.php" enctype="multipart/form-data"  onsubmit="return check()">

    需要在function外单独再编写check函数。

    三、完整源代码及运行截图献上

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title> 验证码</title>
        <style type="text/css">
          #header{ width:95%; height:100px; padding-left:5%; clear:both; border-bottom:#CCC dashed thin ;}
          #header img{width:80px; height:80px; float:left; border-radius:40px; margin-top:10px ;margin-bottom:10px; }
          #header h1{display:inline-block; margin-left:20px;}
          #main{ width:100%; height:auto;}
          body,div,dl,dd,ul,ol,li{ margin:0;padding:0; font:12px/1.5"宋体","Arial",color:#666;}
          body{background:url(uploads/0911454230045.png) no-repeat; background-size:700px,450px; background-position:50px 120px;}
          img{ border:none}
          input,select,img{ vertical-align:middle}/*有疑惑*/
          lable{vertical-align:middle}
          form{ width:450px; height:500px; margin-top:130px; margin-right:80px;float:right; }
          form div{ overflow:hidden; clear:both}
          form div label{float:left; clear:both;}
          form div label .text{ width:152px; height:26px; padding:0 2px; border:1px solid #ccc }
          form div label b{ font-weight:normal; font-size:12px; color:#ccc; visibility:hidden}/*有疑惑*/
          form div em{ display:inline-block; font-family:12px; text-align:center;color:#fff; vertical-align:middle; font-style:normal; width:53px;height:15px; line-height:15px; background-color:#ffd099}
          form div .active{ background-color:#ff6600}
          div span{ display:inline-block; width:80px; text-align:right}
          .submitBtn{width:135px; height:33px; background:url(); color:red; margin:20px 0 0 80px;}/*需完善*/
          .changeimg{ width:22px; height:22px; display:inline-block; vertical-align:middle;background:url(uploads/img1.png) no-repeat 5px 1px}/*需完善*/
          .msg{ line-height:14px; color:#999; float:left; margin-left:5px;margin-top:2px; display:none; }
          .msg i{ display:inline-block; vertical-align:middle; width:25px; height:20px; background:url(uploads/img1_1.png) no-repeat}
          /*.msg .ati{ background:0 -71px}
          .msg .err{background:0 -39px}
          .msg .ok{background:0 -99px}
          */
        </style>
        <script type="text/javascript">
        function getLength(str){
          return str.replace(/[^x00-xff]/g,"xx").length;//使用替换函数将正则值替换为xx
        }
        function findStr(str,n){//检测是否密码为连续的相同字符
            var tmp=0;
            for(var i=0;i<str.length;i++){
                if(str.charAt(i)==n){
                    tmp++;
                  }
            }
            return tmp;
        }
        
    var code = ""; //验证码
    //生成验证码
    function createCode(){
        code = "";//重新初始化验证码
        var num = 4; //验证码位数
        var codeList = new Array(1,2,3,4,5,6,7,8,9,0,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //验证码内容
        //循环获取每一位验证码
            for(var i = 0; i < num; i++){
                //随机数 * 验证码候选元素数量 = 候选元素数组下标
                code += codeList[Math.floor(Math.random() * codeList.length)];
            }
            document.getElementById("txtCode").value = code;
    }
         
     window.onload=function (){
                createCode(); //加载验证码
               var alnput=document.getElementsByTagName('input');
               var oName=alnput[0];
               var pwd=alnput[1];
               var pwd2=alnput[2];
               var ma1=alnput[3];
               var ma2=alnput[4];
               var aP=document.getElementsByTagName('p');//ap中的P为大写
               var name_msg=aP[0];
               var pwd_msg=aP[1];
               var pwd2_msg=aP[2];
               var ma=aP[3];
               var count=document.getElementById('count');
               var aEm=document.getElementsByTagName('em');
               var name_length=0;
               //1.数字、字母(不分大小写)、汉字、下划线
               //2. 5-25字符,推荐使用中文
               //u4e00-u9fa5(这是汉字的范围)
               var re=/[^wu4e00-u9fa5]/g;
               var re_n=/[^d]/g;
               var re_t=/[^a-zA-Z]/g;
               
               //用户名
               oName.onfocus=function(){
                   name_msg.style.display="block";
                   name_msg.innerHTML='<i class="ati"></i>5-25个字符';
               }//获取焦点事件
               oName.onkeyup=function(){
                   count.style.visibility="visible";//有疑惑
                   name_length=getLength(this.value);
                   count.innerHTML=name_length+"个字符";
                   if(name_length==0){
                       count.style.visibility="hidden"; 
                   }
               }//键盘事件
               oName.onblur=function(){
                   //含有非法字符
                     var re=/[^wu4e00-u9fa5]/g;
                     if(re.test(this.value)){
                         name_msg.innerHTML='<i class="err"></i>含有非法字符';
                     }
                   //不能为空
                   else if(this.value==""){
                         name_msg.innerHTML='<i class="err"></i>不能为空';
                   }
                   //长度超过25个字符
                   else if(name_length>25){
                         name_msg.innerHTML='<i class="err"></i>长度超过25个字符';
                   }
                   //长度少于6个字符
                   else if(name_length<6){
                         name_msg.innerHTML='<i class="err"></i>长度少于6个字符';
                   }
                   //ok
                   else{
                       name_msg.innerHTML='<i class="ok"></i>ok';
                       }
               }//失去焦点事件
               //密码
               pwd.onfocus=function(){
                   pwd_msg.style.display="block";
                   pwd_msg.innerHTML='<i class="ati"></i>6-16个字符,请使用字母加数字或符号的组合密码,不能单独使用字母、数字或符号。';
               }
               pwd.onkeyup=function(){
                   //大于5字符"中"
                   if(this.value.length>5){
                       aEm[1].className="active";
                       pwd2.removeAttribute("disabled");//移除禁用属性
                       pwd2_msg.style.display="block";
                   }
                   else{
                      aEm[1].className="";
                      pwd2_msg.style.display="none";
                      pwd2.disabled="true";//重新设置为禁用状态
                     
                   }
                   //大于10个字符"强"
                    if(this.value.length>10){
                       aEm[2].className="active";
                       
                       pwd2_msg.style.display="block";
                   }
                   else{
                      aEm[2].className="";
                   }
                   
               }
               pwd.onblur=function(){
                   var m=findStr(pwd.value,pwd.value[0]);
                   //不能为空
                   if(this.value==""){
                       pwd_msg.innerHTML='<i class="err"></i>不能为空';
                   }
                   //不能用相同字符
                   else if(m==this.value.length){
                       pwd_msg.innerHTML='<i class="err"></i>不能使用相同字符';
                   }
                   //长度应为6-16个字符
                   else if(this.value.length<6||this.value.length>16){
                       pwd_msg.innerHTML='<i class="err"></i>长度应为6-16个字符';
                   }
                   //不能全为数字
                   else if(!re_n.test(this.value)){
                        pwd_msg.innerHTML='<i class="err"></i>不能全为数字';
                   }
                   //不能全为字母
                     else if(!re_t.test(this.value)){
                        pwd_msg.innerHTML='<i class="err"></i>不能全为字母';
                   }
                    //ok
                   else{
                       pwd_msg.innerHTML='<i class="err"></i>ok';
                       
                   }
                  
               }
               //确认密码
              
               pwd2.onblur=function(){
                   if(this.value!=pwd.value){
                       pwd2_msg.innerHTML='<i class="err"></i>两次输入密码不一致!';   
                   }
                   else{
                        pwd2_msg.innerHTML='<i class="err"></i>ok!'; 
                   }
               }
               //验证码
                ma1.onblur=function(){
                    if(ma1.value==code){    
                ma.style.display="block";
                   ma.innerHTML='<i class="ati"></i>ok';
                    }
        else{
            ma.style.display="block";
            ma.innerHTML='<i class="ati"></i>验证码输入有误';
            code = "";
        createCode(); //生成新的验证码
            }
                }
                     
     }
     //下面为check函数进行提交前的验证
       function check(){
           
           var alnput=document.getElementsByTagName('input');
               var oName=alnput[0];
               var pwd=alnput[1];
               var pwd2=alnput[2];
               var ma1=alnput[3];
               var ma2=alnput[4];
               var subt=alnput[5];
               var aP=document.getElementsByTagName('p');//ap中的P为大写
               var name_msg=aP[0];
               var pwd_msg=aP[1];
               var pwd2_msg=aP[2];
               var count=document.getElementById('count');
               var aEm=document.getElementsByTagName('em');
               var name_length=0;
               //1.数字、字母(不分大小写)、汉字、下划线
               //2. 5-25字符,推荐使用中文
               //u4e00-u9fa5(这是汉字的范围)
               var re=/[^wu4e00-u9fa5]/g;
               var re_n=/[^d]/g;
               var re_t=/[^a-zA-Z]/g;
               var k=1;
               var re=/[^wu4e00-u9fa5]/g;
               //用户名
               name_length=getLength(oName.value);
                if (oName.value==""){
                   
                   name_msg.style.display="block";
                   name_msg.innerHTML='<i class="ati"></i>请输入用户名';
                   k=k+1;
                }
                else if(re.test(oName.value)){
                     name_msg.innerHTML='<i class="err"></i>含有非法字符';
                     k=k+1;
                }
                //长度超过25个字符
                   else if(name_length>25){
                         //name_msg.innerHTML='<i class="err"></i>长度超过25个字符';
                         k=k+1;
                   }
                   //长度少于6个字符
                   else if(name_length<6){
                        // name_msg.innerHTML='<i class="err"></i>长度少于6个字符';
                          k=k+1;
                   }
                else{
                    k=k+0;
                }
               
                //密码
                var m=findStr(pwd.value,pwd.value[0]);
                   //不能为空
                   if(pwd.value==""){
                   pwd_msg.style.display="block";
                  // pwd_msg.innerHTML='<i class="ati"></i>不能为空';
                   k=k+1;
                   }
                   //不能用相同字符
                   else if(m==pwd.value.length){
                       k=k+1;
                   }
                   //长度应为6-16个字符
                   else if(pwd.value.length<6||pwd.value.length>16){
                       k=k+1;
                   }
                   //不能全为数字
                   else if(!re_n.test(pwd.value)){
                        k=k+1;
                   }
                   //不能全为字母
                     else if(!re_t.test(pwd.value)){
                        k=k+1;
                   }
                    //ok
                   else{
                       k=k+0;
                       
                   }
                 //确认密码
                  if(pwd2.value!=pwd.value){
                       pwd2_msg.innerHTML='<i class="err"></i>两次输入密码不一致!';  
                       k=k+1; 
                   } 
                   else{
                       k=k+0;
                   }
                 //检验验证码输入是否有误
                 if(ma1.value!=ma2.value){
                     k=k+1;
                 }
                 else{
                     k=k+0;
                 }
                //下面的操作计算check函数的返回值
                if(k!=1){
                    return false;
                }
                else{
                      aEm[1].className="";
                      subt.value='正在提交';
                      subt.disabled='true';
                    return true; 
                }
               
     }
        </script>
       
    </head>
    <body>
        <div id="header">
           <img src="uploads/a1.jpg" /><h1>web学园</h1> 
        </div>
        <div id="main">
        <form method="post"  action="aupload.php" enctype="multipart/form-data"  onsubmit="return check()">
         <div>
          <label> <span>会员名:</span><input type="text" class="text"/></label>
          <p class="msg"><i class="ati"></i>5-25个字符,一个汉字为2个字符,推荐使用中文会员名</p>
         </div>
         <div>
          <label> <span></span><b id="count">0个字符</b></label>
         </div>
         <div>
          <label><span>登录密码:</span><input type="password" class="text"/></label>
          <p class="msg" style="200px; height:50px;"><i class="err"></i>5-25个字符,一个汉字为2个字符,推荐使用中文会员名</p>
         </div>
         <div style="margin:3px 0 10px 0">
          <label><span></span><em class="active"></em><em></em><em></em></label>
         </div>
         <div style="margin-bottom:20px;">
          <label><span>确认密码:</span><input type="password" class="text" disabled=""/></label>
          <p class="msg"><i class="ati"></i>请在输入一次</p>
         </div>
         <div>
          <label><span>验证码:</span><input type="text" style="50px;"/><input id="txtCode" type="text" style=" 60px;" readonly  /><a href="#" class="changeimg" title="重新获取验证码" onClick="createCode()"></a></label> <p class="msg"><i class="ati"></i>验证码输入有误</p>
         </div>
         <div>
          <input class="submitBtn"   type="submit" value="同意协议并注册" onclick=""/>
         </div>
        </form>
       </div>
    </body>
    </html>
  • 相关阅读:
    改变多行文本字符串的缩进
    多线程
    python基本语法2.5--字符串的相关操作
    python基本语法2.4---汉诺塔的递归
    python基本语法2.3--函数及参数传递
    python基本语法2.2--函数名当作变量传递
    python基本语法2.1--if判断和while,for循环
    AlexNet源码
    python基本语法1.4--初识爬虫
    python基本语法1.5--调用numpy库的性能影响
  • 原文地址:https://www.cnblogs.com/xiaogou/p/5245770.html
Copyright © 2011-2022 走看看