事件监听机制,指的是某些组件被执行了某种操作后,触发某些代码的执行。
常见的事件:
【举例】基本事件示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>常见事件</title>
<script>
//onload加载完成事件
window.onload = function () {
/* //失去焦点事件
document.getElementById("username").onblur = function () {
alert("失去焦点");
}
//鼠标移动到元素之上事件
document.getElementById("username").onmouseover = function () {
alert("鼠标来了");
}*/
//鼠标点击事件
/* document.getElementById("username").onmousedown = function (event) {
// alert("鼠标点击");
alert(event.button);
}*/
/* //键盘点击事件
document.getElementById("username").onkeydown = function (event) {
// alert("鼠标点击");
if(event.keyCode==13){
alert("回车提交表单");
}
}*/
/* //改变事件
document.getElementById("city").onchange = function (event) {
alert("改变了");
}*/
/* //onsubmit事件
document.getElementById("form").onsubmit = function () {
//校验用户名格式
var flag = false;
return flag; //返回true,则正确提交表单
}*/
}
</script>
</head>
<body>
<form action="#" id="form">
<input type="text" name="username" id="username">
<select id="city">
<option>--请选择--</option>
<option>--北京--</option>
<option>--上海--</option>
</select>
<input type="submit" value="提交">
</form>
</body>
</html>
在之前的用户登录博文代码的基础上,添加表单校验的内容,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单校验</title>
<style>
*{
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
body{
background: url("../image/6模糊背景.jpg") no-repeat center;
}
.rg_layout{
width: 900px;
height: 500px;
border: 8px solid #EEEEEE;
background: white;
margin: auto;
margin-top: 15px;
}
.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: grey;
font-size: 20px;
}
.rg_center{
/*border: 1px solid red;*/
float: left;
width: 500px;
margin-top: 20px;
margin-left: 80px;
}
.rg_right{
/*border: 1px solid red;*/
float: right;
margin: 15px;
}
.rg_right > p :first-child{
font-size: 10px;
}
.rg_right p a{
color: pink;
}
.td_left{
width: 100px;
height: 45px;
text-align: left;
}
.td_right{
padding-left: 20px;
}
.error{
color: red;
}
#username,#psd,#email,#name,#tel,#gender,#date,#code{
width: 251px;
height: 32px;
border: 1px solid #A6A6A6;
border-radius: 5px;
padding-left: 10px;
}
#code{
width: 110px;
}
#img_code{
height: 30px;
vertical-align: middle;
}
#btn_sub{
width: 150px;
height: 40px;
background: #FFD026;
border: 1px solid #FFD026;
}
</style>
<script>
/*
* 1、给表单绑定onsubmit事件,监听器中判断每一个方法校验的结构,如果都为true,则返回true,若有一个为false,则监听器返回false
* 2、定义一些方法分别校验各个表单项
* 3、给各个表单项绑定onblur事件
* */
window.onload = function () {
document.getElementById("form").onsubmit = function () {
//调用用户校验方法
//调用密码校验方法
return checkUsername() && checkPassword();
}
//给用户名和密码框分别绑定离焦事件
document.getElementById("username").onblur = checkUsername;
document.getElementById("psd").onblur = checkPassword;
}
function checkUsername() {
var username = document.getElementById("username").value;
var reg_username = /^\w{6,12}$/;
var flag = reg_username.test(username);
var s_username = document.getElementById("s_username");
if(flag){
s_username.innerHTML = "<img src='../image/9正确.png' width='35' height='25'/>";
}else{
s_username.innerHTML = "用户名格式有误";
}
return flag;
}
function checkPassword() {
var psd = document.getElementById("psd").value;
var reg_psd = /^\w{6,12}$/;
var flag = reg_psd.test(psd);
var s_psd = document.getElementById("s_password");
if(flag){
s_psd.innerHTML = "<img src='../image/9正确.png' width='35' height='25'/>";
}else{
s_psd.innerHTML = "密码格式有误";
}
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 action="#" method="post" id="form">
<table>
<tr>
<td class="td_left"><label for="username"> 用户名</label></td>
<td class="td_right">
<input type="text" name="uesrname" id="username" placeholder="请输入用户名">
<span id="s_username" class="error"></span>
</td>
</tr>
<tr>
<td class="td_left"><label for="psd"> 密码</label></td>
<td class="td_right">
<input type="password" name="psd" id="psd">
<span id="s_password" class="error"></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"></td>
</tr>
<tr>
<td class="td_left"><label for="name"> 姓名</label></td>
<td class="td_right"><input type="text" name="name" id="name"></td>
</tr>
<tr>
<td class="td_left"><label for="tel"> 手机号</label></td>
<td class="td_right"><input type="text" name="tel" id="tel"></td>
</tr>
<tr>
<td class="td_left"><label for="gender"> 性别</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="date"> 出生日期</label></td>
<td class="td_right"><input type="date" name="date" id="date"></td>
</tr>
<tr>
<td class="td_left"><label for="code"> 验证码</label></td>
<td class="td_right"><input type="text" name="code" id="code">
<img id="img_code" src="../image/5验证码.png">
</td>
</tr>
<tr>
<td colspan="2" align="center"> <input id="btn_sub" type="submit" value="注册"></td>
</tr>
</table>
</form>
</div>
</div>
<div class="rg_right">
<p>已有账号? <a href="#">立即登录</a></p>
</div>
</div>
</body>
</html>
本文为博主原创文章,转载请注明出处。