1. 任务要求

        1)正则表达式的使用;

        2)如何获取表单元素?

        3)函数的应用;

        4)掌握String对象的创建;

        5)掌握String对象的常用方法;

        6)表单验证的方法。

2. 需求说明

    根据所给素材制作注册页面,使用JavaScript制作文本提示特效,验证页面数据的有效性,要求如下:

(1)使用表单form的onsubmit事件,根据验证函数的返回值是true或false来决定是否提示表单。

(2)用户名不能为空,长度为4-12个字符,并且用户名只能由字母、数字和下划线组成。

(3)密码长度为6-12个字符,两次输入的密码必须一致。

(4)必须选择性别。

(5)电子邮箱地址不能为空,并且必须合法。

(6)错误提示信息显示在对应表单元素的后面,例如,若用户名不正确时,在文本框后进行提示,如图所示。

3. 实现思路

        1)给各文本框设置id属性,并在其后面添加div用于显示提示信息。

        2)获取表单元素值,这些值都是字符串类型。

        3)定义满足需求的正则表达式。

        4)使用正则表达式的方法验证用户输入的信息是否正确。

        5)表单提交时使用onsubmit事件触发验证函数,根据判断返回相应信息。

4. 实现代码(JS)

        1)建立函数。用户名验证函数checkUser()、密码验证函数checkPwd()、确认密码验证函数checkRepwd()、电子邮箱验证函数checkEmail(),以及注册成功后函数test()。

        2)使用正则表达式reg.test(),判断输入的用户名、密码、确认密码或电子邮箱是否符合规范。

        3)如果符合要求的输入,返回true,否则提示规范输入应该是什么样的并return false。

        4)当所有信息注册完才能进入注册成功界面,所以test()函数需要对前面的函数进行判断,如果信息有错或未符合要求输入,则可以使用alert()提示。

// JavaScript Document
// 用户名
function checkUser(){
	var user=document.getElementById("user").value;
	var reg=/^\w{4,12}$/;
	if (!reg.test(user)){
		document.getElementById("userId").innerHTML="<img src='img/error.png'/>由字母、数字和下划线组成的4-16位字符";
		return false;
	}
	document.getElementById("userId").innerHTML="<img src='img/ok.png'/>";
	return true;
}
//密码
function checkPwd(){
	var pwd=document.getElementById("pwd").value;
	var reg=/^[a-zA-Z0-9]{4,12}$/;
	var reg1=/^\d{4,12}$/;
	if (!reg.test(pwd)){
		document.getElementById("pwdId").innerHTML="<img src='img/error.png'/>密码长度为6-12个字符";
		return false;
	}
	if (reg1.test(pwd)){
		document.getElementById("pwdId").innerHTML="<img src='img/error.png'/>密码设置太简单";
		return false;
	}
	document.getElementById("pwdId").innerHTML="<img src='img/ok.png'/>";
	return true;
}
//确认密码
function checkRepwd(){
	var repwd=document.getElementById("repwd").value;
	var pwd=document.getElementById("pwd").value;
	if (pwd!=repwd){
		document.getElementById("repwdId").innerHTML="<img src='img/error.png'/>两次输入的密码不一致";
		return false;
	}
	document.getElementById("repwdId").innerHTML="<img src='img/ok.png'/>";
	return true;
}
//电子邮箱
function checkEmail(){
	var email=document.getElementById("email").value;
	var reg=/^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
	if (!reg.test(email)){
		document.getElementById("emailId").innerHTML="<img src='images/error.png'/>Email格式不正确,例如web@sohu.com";
		return false;
	}
	document.getElementById("emailId").innerHTML="<img src='images/ok.png'/>";
	return true;
}
function test(){
	if (!checkUser()||!checkEmail()||!checkPwd()||!checkRepwd()){
		alert("请将注册信息填写完整!");
		return false;
	}
	return true;
}

5. 运行结果 

 6. 其他代码(.html/css)

其中的图片需要自己设定!!!(下面有模板图片)

register.html部分迪马如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>百度注册页面</title>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script src="js/register.js"></script>
</head>

<body>
<div class="center"><img src="img/header1.jpg" width="600px" height="100px"/></div>
<div class="center">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <form action="success.html" method="get" name="myform" onsubmit="return test()"> 
  <tr>
    <td class="left">用户名:</td>
    <td><input id="user" type="text"  class="inputs" onchange="checkUser()"/><div id="userId" class="red"></div></td>
  </tr>
   <tr>
    <td class="left">密码:</td>
    <td><input id="pwd" type="password"  class="inputs" onchange="checkPwd()"/><div id="pwdId" class="red"></div></td>
  <tr>
    <td class="left">确认密码:</td>
    <td><input id="repwd" type="password"  class="inputs" onchange="checkRepwd()"/><div id="repwdId" class="red"></div></td>
  </tr>
  <tr>
   <tr>
    <td class="left">性别:</td>
    <td><div style="float:left;"><input name="sex" type="radio" value="男" checked/>男 <input name="sex" type="radio" value="女" />女</div>
    <div id="sexId" class="red"></div></td>
  </tr>
   <tr>
    <td class="left">电子邮件地址</td>
    <td><input id="email" type="text"  class="inputs" onchange="checkEmail()"/><div id="emailId" class="red"></div></td>
  </tr>
   <tr>
    <td class="left">出生日期:</td>
    <td><select id="year">
    <script type="text/javascript">
	for(var i=1900;i<=2009;i++){
		document.write("<option value="+i+">"+i+"</option>");	
	}
	</script>
    </select>年
    <select id="month">
    <script type="text/javascript">
	for(var i=1;i<=12;i++){
		document.write("<option value="+i+">"+i+"</option>");	
	}
	</script>
    </select>月
    <select id="day">
    <script type="text/javascript">
	for(var i=1;i<=31;i++){
		document.write("<option value="+i+">"+i+"</option>");	
	}
	</script>
    </select>日</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input name="sub" type="submit" value="注册" /> <input name="cancel" type="reset" value="清除" /></td>
  </tr>
  </form>
</table>
</div>
</body>
</html>

success.html部分代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>注册成功</title>
<style type="text/css">
body{
	margin:0;
	text-align:center;
	font-size:24px;
	font-weight:bold;
	background-image: url(img/background1.jpg);
}
</style>
</head>
<body>
<img src="img/top.jpg" width="600px height="100px"/><br />
欢迎您注册成为百度用户!
</body>
</html>

 .css部分代码如下:(url部分的代码需要注意一下)

*{padding:0; margin:0;}
body{
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: auto;
	font-size:12px;
	line-height:30px;
	background-image: url(../img/background1.jpg);//url调用的图片需要自己设置或者删除这句话
}
td div img{
	width:20px;	
}
.center{
	float:none;
	width: 503px;
	clear:both;
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: 100px;
}
.inputs {
	border: 1px solid #333;
	width:120px;
	float:left;
}
.left{width:120px;
text-align:right;
padding-right:5px;
}
.red{
	color:#ff0000;
	padding-left:10px;
	font-size:12px;
}

代码中需要的主要图片以及命名方式如下: 

 error.png

 ok.png

header1.png

 top.png

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐