目錄
1、事件監聽機制概述
事件監聽機制,指的是某些組件被執行了某種操作後,觸發某些代碼的執行。
- 事件:某些操作,如:單擊、雙擊操作,鍵盤按下了,鼠標移動了。
- 事件源:組件,如按鈕、文本輸入框;
- 監聽器:代碼。
- 註冊監聽:將事件、事件源、監聽器結合在一起,當事件源上發生了某個事件,則觸發執行某個監聽代碼。
常見的事件:
- 1)點擊事件:1、onclick:單擊事件
- 2、ondbclick:雙擊事件
- 2)焦點事件:1、obblur:失去焦點,一般用於表單校驗
- 2、onfocus:元素獲得焦點
- 3)加載事件:1、onload:一張頁面或一幅圖像加載完成
- 4)鼠標事件:1、onmousedown:鼠標按鈕被按下,定義方法時,定義一個形參接受event對象,event的屬性可以獲取鼠標哪個鍵被點擊了(左鍵0,中鍵1,右鍵2)
2、onmousemove:鼠標被移動
3、onmouseout:鼠標從某元素移開
4、onmouseover:鼠標移到某元素之上
5、onmouseup:鼠標按鈕被鬆開 - 5)鍵盤事件:1、onkeydown 某個鍵盤按鍵被按下
2、onkeypress 某個鍵盤按鍵被按下並鬆開
3、onkeyup 某個鍵盤按鍵被鬆開 - 6)選中和改變:1、onchange 域的內容被改變
2、onselect 文本被選中 - 7)表單事件:1、onsubmit 確認按鈕被點擊,方法返回false,則阻止表單提交
2、onreset 重置按鈕被點擊
【舉例】基本事件示例
<!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>
2、表單驗證實戰
在之前的用戶登錄博文代碼的基礎上,添加表單校驗的內容,代碼如下:
<!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>
本文爲博主原創文章,轉載請註明出處,若本文對您有些許幫助,輕擡您高貴的小手,關注/評論/點贊/收藏,就是對我最大的支持,多謝,祝君升職加薪,鵬程萬里!