表单的验证

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<form action="#" method="get" id="f">
			用户姓名:<input type="text" name="name" /><span></span><br />
			用户生日:<input type="text" name="birthday"/><span></span><br />
			phone:<input type="number" name="phone"/><span></span><br />
			qq:<input type="text" name="qq"/><span></span><br />

			<input type="submit" value="提交"/>
		</form>
	</body>
	<script type="text/javascript">
		/* 
		 /^ $/ 
		 [0-9] 一个字符 从0-9
		 [a-zA-Z0-9] 一个字符  英文或者数字
		 
		 常用元字符串:
		 \d 数字 [0-9]
		 \D 非数字 [^0-9]
		 \w 数字英文下划线  [0-9a-zA-Z_]
		 \W 非数字英文下划线[^0-9a-zA-Z_]
		 \s 空白
		 \S 非空白
		 .  任意
		 
		 限定符:匹配几个字符
			* 0次或者多次
			+ 至少有一次
			? 0或者1次
			{n} n次
			{n,} 至少n次
			{n,m} 至少n次 至多m次
			
		 [\u4e00-\u9fa5]	
		 手机验证:/^1\d{10}$/	
		 日期验证:/^((19\d{2})|(20\d{2}))-(((0[469]|11)-((012[1-9])|10|20|30))|((0[13578]|10|12)-((012[1-9])|10|20|30|31))|((02)-((012[1-8])|10|20|09|19)))$/;
		 邮箱验证:/^1\d{4,11}@(qq[.]com)|(sina[.]com)$/
		 名字验证:/^[\u4e00-\u9fa5]{2,4}$/	 
		 */
		//获取文本框
		var uName = document.getElementsByTagName("input")[0];
		var uBirthday = document.getElementsByTagName("input")[1];
		var uPhone = document.getElementsByTagName("input")[2];
		var uQQ = document.getElementsByTagName("input")[3];
		var elements = [uName,uBirthday,uPhone,uQQ]
		var rules = [
			{
				name:"name",
				reg:/^[\u4e00-\u9fa5]{2,4}$/,
				msg:"请输入正确格式的名字"
			},
				
			{
				name:"birthday",
				reg:/^((19\d{2})|(20\d{2}))-(((0[469]|11)-((012[1-9])|10|20|30))|((0[13578]|10|12)-((012[1-9])|10|20|30|31))|((02)-((012[1-8])|10|20|09|19)))$/,
				msg:"请输入正确日期"
			},
			{
				name:"phone",
				reg:/^1\d{10}$/,
				msg:"请输入11位有效数字"
			},
			{
				name:"qq",
				reg:/^1\d{4,11}$/,
				msg:"请输入5-12位有效数字"
			}
		];
		function getRuleByName(rules,rName){
			var length = rules.length;
			var rule = null;
			for(var i = 0 ; i < length ; i++){
				if(rules[i].name == rName){
					rule = rules[i];
					break;
				}
			}
			return rule;
		}
		
		function checkText(f){
			var form = document.getElementById(f);
			var input_count = form.children.length;
			for(var i = 0; i<elements.length ; i++){
					elements[i].addEventListener("focusout",function(){
						var rName = this.name;
						var rule = getRuleByName(rules,rName);
						var span = this.nextElementSibling;
						if(!rule.reg.test(this.value)){
							span.innerHTML=rule.msg;
							span.style.color = "red";
						}else{
							span.innerHTML="";
							span.style.color = "";
						}
					})
					
			}	
		}
		window.onload = function(){
			checkText("f");
		}
	</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值