JavaScript 表单校验

JavaScript 表单校验

这里对于JS的表单校验做一下整理。

基础html素材

register.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<center>
		<h3>注册页面</h3>
		<hr />
		<form action="" method="get" >
		<table>
			<tr height="35px">
				<td width="150px">用户名:</td>
				<td width="400px">
					<input type="text" name="uname" id="uname" value="" alt="用户名" />
				    <span id="uname_span"></span>
				</td>
			</tr>
			<tr height="35px">
				<td>密码:</td>
				<td>
					<input type="password" name="pwd" id="pwd" value="" alt="密码" />
					<span id="pwd_span"></span>
					
				</td>
			</tr>
			<tr height="35px">
				<td>手机号:</td>
				<td>
					<input type="text" name="phone" id="phone" value="" alt="手机号" />
					<span id="phone_span"></span>
				</td>
			</tr>
			<tr height="35px">
				<td>邮箱:</td>
				<td>
					<input type="text" name="email" id="email" value="" alt="邮箱"  />
				    <span id="email_span"></span>
				</td>
			</tr>
			<tr height="35px">
				<td>性别:</td>
				<td>
					男:<input type="radio" name="sex" id="" value="1" />
					女:<input type="radio" name="sex" id="" value="0" />
					
					<span id="sex_span">
						
					</span>
				</td>
			</tr>
			<tr height="35px">
				<td>爱好:</td>
				<td>
					<input type="checkbox" name="fav" id="" value="1" />唱歌
					<input type="checkbox" name="fav" id="" value="2" />睡觉
					<input type="checkbox" name="fav" id="" value="3"  />LOL<br />
					<input type="checkbox" name="fav" id="" value="4"  />旅游
					<input type="checkbox" name="fav" id="" value="5" />高尔夫
					<input type="checkbox" name="fav" id="" value="6" />篮球
					
				</td>
			</tr>
			<tr height="35px">
				<td>籍贯:</td>
				<td>
					<select name="adress" id="sel" >
						<option value="0">--请选择--</option>
						<option value="1">河南</option>
						<option value="2">湖南</option>
						<option value="3">海南</option>
						<option value="4">云南</option>
					</select>
					
					<span id="sel_span"></span>
				</td>
			</tr>
			
			<tr height="35px">
				<td>验证码</td>
				<td>
					<input type="number" name="" id="yzm" value="" />
					<span id="yzm_span"></span>
					<span id="yzm2_span"></span>
				</td>
			</tr>
			
			<tr height="35px">
				<td>个人介绍:</td>
				<td>
					<textarea name="intro" rows="8" cols="30"></textarea>
				</td>
			</tr>
			
			<tr height="35px">
				<td colspan="2" align="center">
					<input type="checkbox" name="" id="check" value="" />是否同一本公司协议
				</td>
			</tr>
			<tr height="35px">
				<td colspan="2" align="center">
					<input type="submit" id="sub" value="注册" />
				</td>
			</tr>
		</table>
		</form>
		</center>		
	</body>
</html>

界面如下图所示,由于这里要测试是否可以提交,所以提交方式暂时设置为 GET方式。
这是基础的注册页面

用户名校验

需求:用户名必须是3-5位的汉字;在用户输入完离开当前输入框就提示是否校验成功。
操作:

  1. 添加友好提示:<span id="uname_span">*用户名必须是3-5位的汉字</span>
  2. 定义JS的校验函数:
function  checkName(){
			
				//获得用户名的值
				var  uname=document.getElementById("uname").value;
				
				//获得span对象
				var span =document.getElementById("uname_span");
				
				
				//汉字的正则表达式
				var  reg=/^[\u4e00-\u9fa5]{3,5}$/;
				

				if(uname==null||uname==""){
					
					span.innerText="×用户名不能为空";
					
					span.style.color="red";
					
					
				}else if(reg.test(uname)){
					
					span.innerText="√用户名合法";
					
					span.style.color="green";
					
				}else{
					span.innerText="×用户名不合法";
					
					span.style.color="red";

				}
			}
  1. 将函数绑定到用户名的input标签上
<input type="text" name="uname" id="uname" value="" alt="用户名" onblur="checkName()"/>

密码校验

需求和步骤,与用户名校验类似。所以用上面的代码修修改改即可
<span id="pwd_span">*密码为3-6位数字</span>

function  checkPwd(){
			
				//获得密码的值
				var  pwd =document.getElementById("pwd").value;
				
				//获得span对象
				var span =document.getElementById("pwd_span");
					
				//密码的正则表达式
				var  reg=/^\d{3,6}$/;

				if(pwd==null||pwd==""){
					
					span.innerText="×密码不能为空";
					
					span.style.color="red";
					
					
				}else if(reg.test(pwd)){
					
					span.innerText="√密码合法";
					
					span.style.color="green";
					
				}else{
					span.innerText="×密码不合法";
					
					span.style.color="red";

				}
			}

<input type="password" name="pwd" id="pwd" value="" alt="密码" onblur="checkPwd()" />

发现前面校验的两个函数非常相似,这里就可以将公共部分提取出来。

抽取公共方法

function  check(id,reg){
			
				//获得校验对象的值
				var  obj=document.getElementById(id);
				
				var  val=obj.value;
				
				//获得alt属性
				var  alt=obj.alt;
				
				//获得span对象
				var span =document.getElementById(id+"_span");
				
				if(val==null||val==""){
					
					
					span.innerText="×"+alt+"不能为空";
					
					span.style.color="red";
					
				}else if(reg.test(val)){
					
					span.innerText="√"+alt+"合法";
					
					span.style.color="green";
					
				}else{
					span.innerText="×"+alt+"不合法";
					
					span.style.color="red";
					
				}
			}

此时上面两个校验方法就可简化为:

function  checkName(){
				
				//汉字的正则表达式
				var  reg=/^[\u4e00-\u9fa5]{3,5}$/;
			    
			    return check("uname",reg);
			}
			
			
function  checkPwd(){
					
				//密码的正则表达式
				var  reg=/^\d{3,6}$/;

				return	check("pwd",reg);
			}

效果展示:
用户名密码校验效果
手机号与邮箱校验与上面类似,就不再说明。

性别校验

需求:未选择性别,提示“请选择性别!”;已选择后提示所“性别选择成功”。
步骤:

  1. 友好提示“请选择性别!” <span id="sex_span">*请选择性别!</span>
  2. 性别选择校验
function  checkSex(){
				
				//获得所有的性别对象
				var  sex=document.getElementsByName("sex");
				
				//获得span对象
				
				var span =document.getElementById("sex_span");
				for(var  i in sex){
					
					
					if(sex[i].checked){
						
						span.innerHTML="性别选择成功";
						
						span.style.color="green";
					}
					
				}
				
				
				span.innerHTML="请选择性别";
						
				span.style.color="red";
			}
  1. 绑定事件
<td>
	男:<input type="radio" name="sex" id="" value="1" onclick="checkSex()"/>
	女:<input type="radio" name="sex" id="" value="0" onclick="checkSex()"/>
					
	<span id="sex_span">*请选择性别!</span>
</td>

效果展示:
性别校验

爱好与性别类似,不再赘述。

籍贯校验

直接上代码

/*********籍贯校验***********/
function  checkAdress(){
				
				var  sel=document.getElementById("sel").value;
				
				var  span =document.getElementById("sel_span");
				
				if(sel==0){
					
					span.style.color="red";
					span.innerText="请选择籍贯"
				}else {
					
					span.style.color="green";
					span.innerText="籍贯选择成功";
				}				
			}
<td>籍贯:</td>
<td>
	<select name="adress" id="sel" onchange="checkAdress()">
						<option value="0">--请选择--</option>
						<option value="1">河南</option>
						<option value="2">湖南</option>
						<option value="3">海南</option>
						<option value="4">云南</option>
	</select>
					
	<span id="sel_span">*请选择籍贯</span>
</td>

验证码校验

function  checkYZM(){
				
				//获得自己输入的验证码
				var  yzm=document.getElementById("yzm").value;
				
				//获得span标签
				var  span =document.getElementById("yzm2_span");
				
				if(ran==yzm){
					
					span.style.color="green";
					span.innerText="验证码正确";
					
					return true;
					
				}else {
					
					span.style.color="red";
					span.innerText="验证码不正确";
				}	
			}	
<td>验证码</td>
<td>
	<input type="number" name="" id="yzm" value="" onblur="checkYZM()"/>
	<span id="yzm_span"></span>
	<span id="yzm2_span"></span>
</td>

是否同意本公司协议

/*******是否同意协议**********/
function  checkAgree(){
				//同意框
				var  check=document.getElementById("check");
				//提交
				var  sub=document.getElementById("sub");
				
				sub.disabled=!check.checked;	
			}
<input type="checkbox" name="" id="check" value="" onclick="checkAgree()">是否同一本公司协议

注册提交按钮校验

做这一步之前,需要在之前的校验中通过的return true;不通过的 return false。 在验证码校验里已经添加,可以参考。这里只写了部分校验方法,实际应用中需要全部校验通过在提交。

function zong(){
				
	var  flag=checkName()&&checkPwd()&&checkPhone()&&checkEmail()&&checkSex()&&checkYZM()&&checkAgree();
					
		     return flag;		
			}
			
<input type="submit" id="sub" value="注册" disabled="true"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值