Form表单校验

 

正则表达式的两种使用方式及其用法上的区别

表单提交的两种方式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单校验</title>

<script type="text/javascript">
	function checkUname(node) {
		var flag = false;
		if(node==undefined) {
			node = document.getElementById("uname");
		}
		var uname = node.value;
		var unameSpan = document.getElementById('unameSpan');
		
		//限定只能为字母,不区分大小写,长度4位
		var reg = /^[a-z]{4}$/i;
		//var reg = new RegExp("^[a-z]{4}$","i");//匹配模式 i 忽略大小写 
		
		//正则表达式的2中定义方式
		//var reg = /^\d{4}$/i;//不需要对\d转义
		//var reg = new RegExp("^\\d{4}$","i");//由于在字符串中定义正则,所以需要对\d进行转义,这就是两种定义方式的区别  
		
		if(reg.test(uname)) {
			flag = true;
			unameSpan.innerHTML = "<b>ok</b>".fontcolor("green");
			//unameSpan.innerHTML = "<img src='ok.jpg' alt='ok'/>";
		}else {
			unameSpan.innerHTML = "<b>用户名不符合要求</b>".fontcolor("red");
		}
		
		return flag;
	}
	
	
	//控制form表单的提交 
	function checkForm() {
		return checkUname();
	}
	
	//另一种表单提交方式:
		//通过form表单的submit方法进行提交(更灵活,可以通过外部的各种事件来完成 ,如按钮被点击,超链接/图片被点击 ,等等 ) 
	function mySubmit() {
		if(!checkForm())
			return;
		var fm = document.getElementById("form_1");
		fm.submit();
	}
</script>

</head>
<body>
	<div>
		<form id="form_1" οnsubmit="return checkForm();">
			<table>
				<tbody>
					<tr>
						<td>
							用户名
						</td>
						<td>
							<input type="text" name="uname" id="uname" οnblur="checkUname(this);"/>
							<span id="unameSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							输入密码
						</td>
						<td>
							<input type="password" name="pwd" id="pwd" οnblur="checkPwd(this);"/>
							<span id="pwdSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							确认密码
						</td>
						<td>
							<input type="password" name="repwd" id="repwd" οnblur="checkRepwd(this);"/>
							<span id="repwdSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							邮件地址
						</td>
						<td>
							<input type="text" name="email" id="email" οnblur="checkEmail(this);"/>
							<span id="emailSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							<!-- submit具有默认的提交效果 -->
							<input type="submit" value="提交"/>
						</td>
					</tr>
				</tbody>
			</table>
		</form>
		
		<hr/>
		<input type="button" value="另一种提交方式 " οnclick="mySubmit();"/>
		
	</div>
</body>
</html>

 

 

复用校验逻辑,减少冗余代码

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单校验</title>

<script type="text/javascript">
	/*校验用户名*/
	function checkUname() {
		var reg = /^[a-z]{4}$/i;
		return check(reg,"uname","unameSpan", "用户名正确".fontcolor("green"), "用户名错误".fontcolor("red"));
	}
	/*校验密码*/
	function checkPwd() {
		var reg = /^\d{6}$/i;
		return check(reg,"pwd","pwdSpan","密码格式正确".fontcolor("green"),"密码格式错误".fontcolor("red"));
	}
	
	/*校验2次密码是否一致*/
	function checkRepwd() {
		var pwd = document.getElementById("pwd").value;
		var repwd = document.getElementById("repwd").value;
		var spanRepwd = document.getElementById("repwdSpan");
		if(pwd==repwd) {
			spanRepwd.innerHTML = "两次密码一致".fontcolor("green");
		} else {
			spanRepwd.innerHTML = "两次密码不一致".fontcolor("red");
		}
		return pwd==repwd;
	}
	
	/*校验邮箱格式*/
	function checkEmail() {
		var reg = /^\w+@\w+(\.\w+)+$/i;
		return check(reg,"email","emailSpan","邮件格式正确".fontcolor("green"),"邮件格式错误".fontcolor("red"));
	}
	
	
	//复用校验逻辑!!! 
	function check(reg,nodeId,spanId,okInfo,errorInfo) {
		var flag;
		var val = document.getElementById(nodeId).value;
		var unameSpan = document.getElementById(spanId);
		if(reg.test(val)) {
			flag = true;
			unameSpan.innerHTML = okInfo;
		}else {
			flag = false;
			unameSpan.innerHTML = errorInfo;
		}
		return flag;
	}
	
	
	//控制form表单的提交 
	function checkForm() {
		//alert(checkUname() +","+ checkPwd()  +","+  checkRepwd()  +","+  checkEmail());
		//最后进行提交的时候,再次调用每个方法,确保都为true的情况下提交表单数据 
		return  checkUname() && checkPwd() && checkRepwd() && checkEmail();
	}
	
</script>

</head>
<body>
	<div>
		<form id="form_1" οnsubmit="return checkForm();">
			<table>
				<tbody>
					<tr>
						<td>
							用户名
						</td>
						<td>
							<input type="text" name="uname" id="uname" οnblur="checkUname();"/>
							<span id="unameSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							输入密码
						</td>
						<td>
							<input type="password" name="pwd" id="pwd" οnblur="checkPwd();"/>
							<span id="pwdSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							确认密码
						</td>
						<td>
							<input type="password" name="repwd" id="repwd" οnblur="checkRepwd();"/>
							<span id="repwdSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							邮件地址
						</td>
						<td>
							<input type="text" name="email" id="email" οnblur="checkEmail();"/>
							<span id="emailSpan"></span>
						</td>
					</tr>
					<tr>
						<td>
							<!-- submit具有默认的提交效果 -->
							<input type="submit" value="提交"/>
						</td>
					</tr>
				</tbody>
			</table>
		</form>
		
	</div>
</body>
</html>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值