项目场景:
考察如下:
获取字符串类型的表单数据
使用字符串对象方法验证用户输入信息的合法性
表单提交时使用onsubmit事件触发验证函数
问题描述:
(1)用户名是由英文字母和数字组成的4~16位字符,以字母开头。加载页面时提示相应信息如图所示。
(2)密码由4~10位字符组成,加载页面时提示相应信息,密码和确认密码必须一致。
(3)电子邮箱信息必须包含“@”符号和“.”符号,且“@”符号不能在第1位,必须在“.”符号前面。
(4)手机号码必须是11位数字,且由1开头。
(5)生日按1985-05-01格式输入,输入的月为1~12,输入的日为1~31。
(6)单击“注册完成”按钮时,如果页面信息输入正确,则提交表单;否则不提交。
解决方案:
先将静态页面的HTML 和CSS代码放出来:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html"; charscharset="gb2312">
<title>注册页面</title>
<style type="text/css">
</style>
</head>
<body>
<table class="main" border="0" cellpadding="0" cellpadding="0">
<tr>
<td><img src="../img/logo.jpg" width="150" height="57" alt="logo"/>
<img src="../img/banner.jpg" width="375" height="57" alt="banner"/>
</td>
</tr>
<tr>
<td class="hr_1">新用户注册</td>
</tr>
<tr>
<td style="height: 10px;"></td>
</tr>
<form action="" method="post" name="myform" >
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="left">用户名</td>
<td class="center"><input id="user" type="text" class="inputClass" onblur="checkUser()" /></td>
<td><div id="user_prompt">用户名由4-16位字符组成,不能包含数字</div></td>
</tr>
<tr>
<td class="left">密码</td>
<td class="center"><input id="pwd" type="password" class="inputClass" onblur="checkPwd()"/></td>
<td><div id="pwd_prompt">密码由4-10位字符组成</div></td>
</tr>
<tr>
<td class="left">确认密码</td>
<td class="center"><input id="repwd" type="password" class="inputClass" onblur="checkRepwd()"/></td>
<td><div id="repwd_prompt"></div></td>
</tr>
<tr>
<td class="left">电子邮箱</td>
<td class="center"><input id="email" type="text" class="inputClass" onblur="checkEmail()"/></td>
<td><div id="email_prompt">邮箱格式实例:web@126.com</div></td>
</tr>
<tr>
<td class="left">手机号码</td>
<td class="center"><input id="mobile" type="text" class="inputClass" onblur="checkMobile()" /></td>
<td><div id="mobile_prompt">手机号码必须是11位数字,且由1开头</div></td>
</tr>
<tr>
<td class="left">出生日期</td>
<td class="center"><input id="birth" type="text" class="inputClass" onblur="checkBirth()"/></td>
<td><div id="birth_prompt">请按xxxx-xx-xx输入出生日期</div></td>
</tr>
<tr>
<td class="left"> </td>
<td class="center"><input name="" type="image" src="images/register.jpg" /></td>
<td> </td>
</tr>
</form>
</table>
</body>
</html>
接下来就要定义验证函数:
接下来就要定义验证函数:
现完整代码如下:
<script type="text/javascript"> //定义该函数,用于根据id获取页面元素 function getId (elementId){ return document.getElementById(elementId); } //定义验证用户名的函数 //<input id="user" type="text" class="inputClass" onblur="checkUser()" /> function checkUser(){ var user = getId("user").value; var userid = getId("user_prompt"); userid.innerHTML=""; //向对象插入内容; if(user.length<4 || user.length>16){ userid.innerHTML="请输入4-16位字符" return false; } for(var i=0;i<user.length;i++){ if(!isNaN(user.charAt(i))){ userid.innerHTML="用户名中不能包含数字"; return false; } } return true; } //定义验证密码的函数 //<input id="pwd" type="password" class="inputClass" onblur="checkPwd()"/<div id="pwd_prompt" function checkPwd(){ var pwd = getId("pwd").value; var pwdid = getId("pwd_prompt"); pwdid.innerHTML=""; if(pwd.length<4 || pwd.length>10){ pwdid.innerHTML="请输入4-10位字符"; return false; } return true; } //<input id="repwd" type="password" class="inputClass" onblur="checkRepwd()"/> function checkRepwd(){ var pwd = getId("pwd").value; var repwd = getId("repwd").value; var repwdid = getId("repwd_prompt"); if(pwd!=repwd){ repwdid.innerHTML="2次输入密码不一致"; return false; } return true; } //定义验证电子邮箱的的函数 //<input id="email" type="text" class="inputClass" onblur="checkEmail() function checkEmail(){ var email = getId("email").value; var emailid = getId("email_prompt"); emailid.innerHTML=""; var index = email.indexOf("@"); if(index == -1){ emailid.innerHTML="输入的邮箱格式应该包含@"; return false; } if(email.indexOf(".",index) == -1){ emailid.innerHTML="“@”符号不能在第1位,必须在“.”符号前面"; return false; } return true; } //定义验证手机号 //<input id="mobile" type="text" class="inputClass" onblur="checkMobile()" /> function checkMobile(){ var mobile =getId("mobile").value; var mobileid = getId("mobile_prompt"); mobileid.innerHTML=""; if(mobile.length!=11){ mobile.innerHTML="输入号码长度应该为11"; return false; } if(mobile.charAt("0"!=1)){ mobile.innerHTML="输入号码开头应该为1"; return false; } return true; } //定义验证生日日期 //<input id="birth" type="text" class="inputClass" onblur="checkBirth()" var birth = getId("birth").value; var birthId = getId("birth_prompt"); birthId.innerHTML=""; if(birth.length!=10 || birth.charAt(4)!="-" || birth.charAt(7)!="-"){ birthId.innerHTML="出生日期输入格式有误"; return false; } var birthdays = birth.split("-"); year = parseInt(birthdays[0],10); month = parseInt(birthdays[1],10); day = parseInt(birthdays[2],10); var now = new Date(); nowYear = now.getFullYear(); if(isNaN(year) || isNaN(month) || isNaN(day)){ birthId.innerHTML="出生日期不能包含字符"; return false; } if(year <= 1900 || year >nowYear){ birthId.innerHTML="出生年份输入有误"; return false; } if(month <= 0 || month >12){ birthId.innerHTML="出生年份输入有误"; return false; } if(day <= 0 || day >31){ birthId.innerHTML="出生年份输入有误"; return false; } return true; } // 定义验证所有内容的函数 function checkAll(){ if(checkUser && checkPwd() && checkRepwd() && checkEmail() && checkMobile() && checkBirth()){ //所有函数返回true时提交表单 return true; } else{ return false; } } </script>
将以上script标签内的内容添加到HTML和css代码里面,即可实现