JavaWeb——JavaScript精講之事件監聽機制與表單校驗案例實戰

目錄

1、事件監聽機制概述

2、表單驗證實戰


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>

 

本文爲博主原創文章,轉載請註明出處,若本文對您有些許幫助,輕擡您高貴的小手,關注/評論/點贊/收藏,就是對我最大的支持,多謝,祝君升職加薪,鵬程萬里!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章