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位的汉字;在用户输入完离开当前输入框就提示是否校验成功。
操作:
- 添加友好提示:
<span id="uname_span">*用户名必须是3-5位的汉字</span>
- 定义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";
}
}
- 将函数绑定到用户名的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);
}
效果展示:
手机号与邮箱校验与上面类似,就不再说明。
性别校验
需求:未选择性别,提示“请选择性别!”;已选择后提示所“性别选择成功”。
步骤:
- 友好提示“请选择性别!”
<span id="sex_span">*请选择性别!</span>
- 性别选择校验
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";
}
- 绑定事件
<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"/>