表单验证

<!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>

  

原文地址:https://www.cnblogs.com/z-sheng/p/4435068.html