1效果展示
2实现的思路
- 思想就是我们先在一个输入框的后面放置一个占位用的span标签
* 根据表单的验证是否成功来设置span标签里面的东西 成功了就现实对号 失败了就显示“您输入的数据格式有误”
* 有两个事件触发表单的校验
* 1.点击提交按钮
* 2.输入框失去焦点
*
* 我们在这里只实现了 姓名和密码的数据校验
3关于javascript里面调用方法的时候加不加括号的区别
注意这里有一个要注意的点在执行代码的时候 千万不要在checkUseName后面加() 像下面这样
* document.getElementById(“username”).onblur = checkUserName() ;
*
* 这里我们就要来讲一下 带括号和不到括号的区别了
* 带括号的话 加括号的,就代表将会执行函数体代码。 也会得到函数的返回值
* 所以我们在这里加括号的话 直接就开始执行方法体了
* 现象就是当时打开这个页面的时候就会 直接告诉你数据不合法 因为直接就开始执行代码了
*
* 不带括号的话 :
* 不加括号的,都是把函数名称作为函数的指针,一个函数的名称就是这个函数的指针,此时不是得到函数的结果,
* 因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
4.完整的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<style>
*{
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
body{
background: url("../img/register_bg.png") no-repeat center;
padding-top: 25px;
}
.rg_layout{
width: 900px;
height: 500px;
border: 8px solid #EEEEEE;
background-color: white;
/*让div水平居中*/
margin: auto;
}
.rg_left{
/*border: 1px solid red;*/
float: left;
margin: 15px;
}
.rg_left > p:first-child{
color:#FFD026;
font-size: 20px;
}
.rg_left > p:last-child{
color:#A6A6A6;
font-size: 20px;
}
.rg_center{
float: left;
/* border: 1px solid red;*/
}
.rg_right{
/*border: 1px solid red;*/
float: right;
margin: 15px;
}
.rg_right > p:first-child{
font-size: 15px;
}
.rg_right p a {
color:pink;
}
.td_left{
width: 100px;
text-align: right;
height: 45px;
}
.td_right{
padding-left: 50px ;
}
#username,#password,#email,#name,#tel,#birthday,#checkcode{
width: 251px;
height: 32px;
border: 1px solid #A6A6A6 ;
/*设置边框圆角*/
border-radius: 5px;
padding-left: 10px;
}
#checkcode{
width: 110px;
}
#img_check{
height: 32px;
vertical-align: middle;
}
#btn_sub{
width: 150px;
height: 40px;
background-color: #FFD026;
border: 1px solid #FFD026 ;
}
#span_password,#span_username{
color: red;
}
/* */
</style>
<script>
/**
* 思想就是我们先在一个输入框的后面放置一个占位用的span标签
* 根据表单的验证是否成功来设置span标签里面的东西 成功了就现实对号 失败了就显示“您输入的数据格式有误”
* 有两个事件触发表单的校验
* 1.点击提交按钮
* 2.输入框失去焦点
*
* 我们在这里只实现了 姓名和密码的数据校验
*/
//我们先来设置点击submit的提交事件 :注意我们并不是给submit的按钮设置点击事件而是监听form表单的onsubmit事件
//因为submit按钮点击之后不管怎样表单都会被提交 但是我们可以监听onsubmit来控制表单是否要提交
//页面加载完毕以后开始实现 标签的监听
window.onload = function (){
//监听表单的提交
document.getElementById("form").onsubmit = function (){
//用户名 是否合法发 这里要返回结果
return checkUserName()&&checkpassword();
}
//设置输入框失去焦点的监听事件 等号右边直接些方法名就可以了
/**
* 注意这里有一个要注意的点在执行代码的时候 千万不要在checkUseName后面加() 像下面这样
* document.getElementById("username").onblur = checkUserName() ;
*
* 这里我们就要来讲一下 带括号和不到括号的区别了
* 带括号的话 加括号的,就代表将会执行函数体代码。 也会得到函数的返回值
* 所以我们在这里加括号的话 直接就开始执行方法体了
* 现象就是当时打开这个页面的时候就会 直接告诉你数据不合法 因为直接就开始执行代码了
*
* 不带括号的话 :
* 不加括号的,都是把函数名称作为函数的指针,一个函数的名称就是这个函数的指针,此时不是得到函数的结果,
* 因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
*
*/
document.getElementById("username").onblur = checkUserName ; //姓名框失去焦点
document.getElementById("password").onblur = checkpassword ; //密码框失去焦点
}
//写一个检查用户名是否合法的方法
function checkUserName(){
var username = document.getElementById("username").value ; //得到输入框里面的数据
var regexp = /^\w{6,12}$/; //定义正则表达式
var flag = regexp.test(username); //正则表达式校验字符串
var span = document.getElementById("span_username"); //找到预留的span
if(!flag){
//不合法就在提前写好的span里面显示“您输入的数据格式有误”
span.innerHTML = "您输入的数据格式有误";
}else {
//合法的话就在后面显示对号的图片
span.innerHTML = " <img width=\"16px\" src=\"../img/gou.png\" alt=\"对钩\">";
}
//将结果返回给表单的监听器 让他知道知否要提交表单
return flag;
}
//写一个检查用户名是否合法的方法
function checkpassword(){
var password = document.getElementById("password").value ; //得到输入框里面的数据
var regexp = /^\w{6,12}$/; //定义正则表达式
var flag = regexp.test(password); //正则表达式校验字符串
var span = document.getElementById("span_password"); //找到预留的span
if(!flag){
//不合法就在提前写好的span里面显示“您输入的数据格式有误”
span.innerHTML = "您输入的数据格式有误";
}else {
//合法的话就在后面显示对号的图片
span.innerHTML = " <img width=\"16px\" src=\"../img/gou.png\" alt=\"对钩\">";
}
//将结果返回给表单的监听器 让他知道知否要提交表单
return flag;
}
</script>
</head>
<body>
<div class="rg_layout">
<div class="rg_left">
<p>新用户注册</p>
<p>USER REGISTER</p>
</div>
<div class="rg_center">
<div class="rg_form">
<!--定义表单 form-->
<form action="#" method="post" id="form">
<table>
<tr>
<td class="td_left"><label for="username">用户名</label></td>
<td class="td_right"><input type="text" name="username" id="username" placeholder="请输入用户名">
<span id="span_username"></span>
</td>
</tr>
<tr>
<td class="td_left"><label for="password">密码</label></td>
<td class="td_right"><input type="password" name="password" id="password" placeholder="请输入密码">
<span id="span_password"></span>
</td>
</tr>
<tr>
<td class="td_left"><label for="email">Email</label></td>
<td class="td_right"><input type="email" name="email" id="email" placeholder="请输入邮箱"></td>
</tr>
<tr>
<td class="td_left"><label for="name">姓名</label></td>
<td class="td_right"><input type="text" name="name" id="name" placeholder="请输入姓名"></td>
</tr>
<tr>
<td class="td_left"><label for="tel">手机号</label></td>
<td class="td_right"><input type="text" name="tel" id="tel" placeholder="请输入手机号"></td>
</tr>
<tr>
<td class="td_left"><label>性别</label></td>
<td class="td_right">
<input type="radio" name="gender" value="male"> 男
<input type="radio" name="gender" value="female"> 女
</td>
</tr>
<tr>
<td class="td_left"><label for="birthday">出生日期</label></td>
<td class="td_right"><input type="date" name="birthday" id="birthday" placeholder="请输入出生日期"></td>
</tr>
<tr>
<td class="td_left"><label for="checkcode" >验证码</label></td>
<td class="td_right"><input type="text" name="checkcode" id="checkcode" placeholder="请输入验证码">
<img id="img_check" src="../img/verify_code.jpg">
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" id="btn_sub" value="注册"></td>
</tr>
</table>
</form>
</div>
</div>
<div class="rg_right">
<p>已有账号?<a href="#">立即登录</a></p>
</div>
</div>
</body>
</html>