zoukankan      html  css  js  c++  java
  • 表单验证

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>无标题文档</title>
    <style>
    	.msg{ display:none;}
    	#count{ visibility:hidden;}
    	.ative{ background:pink;}
    </style>
    <script>
    //判断字符串是不是 同一字符
    function findstr(str,n){
    	var tmp = 0;
    	for(var i=0; i<str.length; i++){
    		if(str.charAt(i)==n){
    			tmp++;
    		}
    	}
    	return tmp;
    }
    
    //返回字符串的长度
    function geiLength(str){
    	return str.replace(/[^x00-xff]/g,"xx").length;
    }
    
    window.onload=function(){
    	var op = document.getElementsByTagName('p'),
    		onamep = op[0],
    		opwd1p = op[1],
    		opwd2p = op[2];
    	var count = document.getElementById('count');
    	var text = document.getElementById('text');
    	var password1 = document.getElementById('password1');
    	var password2 = document.getElementById('password2');
    	var ems = document.getElementsByTagName('em');
    	var nameLength = 0;
    	
    	//用户名
    	text.onfocus=function(){ //获得焦点时发生
    		onamep.style.display = 'block';
    	}
    	
    	text.onkeyup=function(){ //键盘按键被松开时发生
    		count.style.visibility = 'visible';
    		nameLength = geiLength(this.value);
    		count.innerHTML = nameLength + '个字符';
    		
    		if(nameLength==0){
    			count.style.visibility = 'hidden';
    		}
    	}
    	
    	text.onblur=function(){ //失去焦点时发生
    		
    		var re = /[^wu4e00-u9fa5]/g;  
    		
    		if(re.test(this.value)){    //含有非法字符	
    			onamep.innerHTML = '<i class="err"></i>含有非法字符!';
    		}else if(this.value==""){   //不能为空	
    			onamep.innerHTML = '<i class="err"></i>不能为空!';
    		}else if(nameLength > 25){  //长度不超过25个字符	
    			onamep.innerHTML = '<i class="err"></i>长度不超过25个字符!';
    		}else if(nameLength < 6){   //长度不少于6个字符
    			onamep.innerHTML = '<i class="err"></i>长度不少于6个字符!';
    		}else{                     //ok
    			onamep.innerHTML = '<i class="ok"></i>ok';
    		}
    	}
    	
    	//密码
    	password1.onfocus=function(){  //获得焦点
    		opwd1p.style.display = 'block';
    		opwd1p.innerHTML = '<i class="err"></i>6-16个字符,对密码的要求';
    	}
    	password1.onblur=function(){   //失去焦点
    		
    		var m = findstr(this.value,this.value[0]);
    		var re_n = /[^d]/g;   //匹配的非数字
    		var re_t = /[^a-zA-Z]/g;
    		
    		if(this.value==''){//不能为空
    			opwd1p.innerHTML = '<i class="err"></i>不能为空';
    		}else if(m==this.value.length){ //不能用相同字符
    			opwd1p.innerHTML = '<i class="err"></i>不能用相同字符';
    		}else if(this.value.length<6 || this.value.length>16){ //长度为6-16字符
    			opwd1p.innerHTML = '<i class="err"></i>长度为6-16字符';
    		}else if(!re_n.test(this.value)){ //不能全为数字
    			opwd1p.innerHTML = '<i class="err"></i>不能全为数字';
    		}else if(!re_t.test(this.value)){ //不能全为字母
    			opwd1p.innerHTML = '<i class="err"></i>不能全为字母';
    		}else{     //ok
    			opwd1p.innerHTML = '<i class="err"></i>ok';
    		}
    		
    		
    		
    	}
    	password1.onkeyup=function(){  //松开鼠标按键时
    		if(this.value.length > 5){   //大于5个字符为 中
    			ems[1].className = 'ative';
    			password2.removeAttribute('disabled');
    			opwd2p.style.display = 'block';
    		}else{
    			ems[1].className = '';
    			password2.setAttribute('disabled');   //setAttribute存在浏览器兼容问题
    			opwd2p.style.display = 'none';
    		}
    		//大于10个字符为  强
    		if(this.value.length > 10){   //大于5个字符为 中
    			ems[2].className = 'ative';
    		}else{
    			ems[2].className = '';
    		}
    	}
    	
    	//确认密码
    	password2.onblur=function(){   //失去焦点
    		if(this.value != password1.value){
    			opwd2p.innerHTML = '<i class="err"></i>两次密码不一样';
    		}else{
    			opwd2p.innerHTML = '<i class="err"></i>ok';
    		}
    	}
    }
    </script>
    </head>
    
    <body>
    	<form>
        	<div>
            	<label>
                	<span> 会员名:</span>
                    <input type="text" class="text" id="text">
                </label>
                <p class="msg"><i class="ati"></i>5-25个字符,一个汉字为两个字符,推荐使用中文会员名</p>
            </div>
            
            <div>
            	<label>
                	<span></span>
                    <b id="count">0个字符</b>
                </label>
            </div>
            
            <div>
            	<label>
                	<span>登陆密码:</span>
                    <input type="password" class="text" id="password1">
                </label>
                <p class="msg"><i class="err"></i>5-25个字符,一个汉字为两个字符,推荐使用中文会员名</p>
            </div>
            
            <div style="margin:3px 0 10px 0">
            	<label>
                	<span></span>
                    <em class="active">弱</em>
                    <em class="active">中</em>
                    <em class="active">强</em>
                </label>
            </div>
            
            <div style="margin-bottom:20px;">
            	<label>
                	<span>确认密码:</span>
                    <input type="password" class="text" disabled="" id="password2"/>
                </label>
                <p class="msg"><i class="ati"></i>请再一次输入</p>
            </div>
            
            <div>
            	<label>
                	<span>验证码:</span>
                    <input type="text" class="text" style="50px">
                    <img src="">
                    <a class="changelmg" href="javascript:;" title="重新获取验证码"></a>
                </label>
            </div>
            
            <div>
            	<input class="submitBtn btn" type="submit" value="同意协议并注册" />
            </div>
        </form>
    </body>
    </html>
    

      

  • 相关阅读:
    TOJ 5021: Exchange Puzzle
    Educational Codeforces Round 26
    2017 Multi-University Training Contest
    TOJ 5020: Palindromic Paths
    数论之 莫比乌斯函数
    TOJ 4475: The Coolest Sub-matrix
    Game on Tree
    python 线程
    python 管道、数据共享、进程池
    python 守护进程、同步锁、信号量、事件、进程通信Queue
  • 原文地址:https://www.cnblogs.com/z-sheng/p/4435068.html
Copyright © 2011-2022 走看看