HTML + CSS + JavaScript 實現注冊頁面信息驗證(表單驗證)


要求

創建一個注冊頁面,如下圖。

img

然后再對注冊信息進行判斷,判斷其是否符合要求。(如:密碼6-12位字符,不能有空格等)

圖片素材如下:

img

img

注冊頁面的整個框架

注冊頁面框架分析

頁面內容主要分為三個部分:

img

我們可以使用三個塊標簽,可以將這三個部分分別放到每個塊標簽中。

注冊頁面框架的實現

第一部分:兩個段落文本

<!-- 左邊部分 -->
<div class="rg_left">
    <p>新用戶注冊</p>
    <p>USER REGISTER</p>
</div>

第二部分:一個表單

<!-- 中間部分 -->
<div class="rg_center">
    <!-- 定義表單 form -->
    <form action="#" method="post">
        <!-- 定義一個表格 -->
        <table>
            <!-- 表格第一行有兩個單元格:用戶名 + 輸入用戶名信息區域 -->
            <tr>
                <!-- 定義一個標簽:用戶名 -->
                <td class="td_left"><label for="username">用戶名</label></td>
                <!-- 定義輸入用戶名信息的框框 -->
                <td class="td_right"><input type="text" name="username" id="username" placeholder="請輸入用戶名"></td>
            </tr>

            <!-- 表格第二行有兩個單元格:密碼 + 輸入密碼區域 -->
            <tr>
                <!-- 定義一個標簽:密碼 -->
                <td class="td_left"><label for="password">密碼</label></td>
                <!-- 定義輸入密碼的框框 -->
                <td class="td_right"><input type="password" name="password" id="password" placeholder="請輸入密碼"></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"></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 class="rg_right ">
    <p>已有賬號?<a href="#">立即登錄</a></p>
</div>

三個部分效果如下:

img

對這三個部分和頁面背景,用CSS樣式進行修飾:

/* 選擇body標簽,設置背景 */
body {
    background: url("./img/register_bg.png");
}
/* 為內容部分添加一個方框 */
.rg_layout {
    width: 900px;
    height: 500px;
    border: 8px solid #EEEEEE;
    background-color: white;
    /*讓div水平居中*/
    margin: auto;
}
/* 將內容分為三個部分:左、中、右 */
.rg_left {
    float: left;
    margin: 15px;
}
.rg_center {
    float: left;
}
.rg_right {
    float: right;
    margin: 15px;
}
/* 對左邊部分進行描述:字體大小,字體顏色 */
.rg_left > p:first-child {
    color:#FFD026;
    font-size: 20px;
}

.rg_left > p:last-child {
    color:#A6A6A6;
    font-size: 20px;
}
/* 對右邊部分進行描述:字體大小,字體顏色 */
.rg_right > p:first-child {
    font-size: 15px;

}
.rg_right p a {
    color:pink;
}
/* 對中間部分進行描述*/
.td_left {
    width: 100px;
    /* 每行的高度為45個像素點 */
    height: 45px;
    /* 字體向右對齊 */
    text-align: right;
}
.td_right {
    /* 左邊字體部分與右邊內容部分之間,填充(隔開)50個像素點的位置 */
    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 ;
}

描述之后,效果如下:

img

不過這個時候還沒有驗證功能,下面將實現這一功能。

表單驗證功能的實現

這里拿用戶名和密碼進行驗證:用戶名和密碼都是6-12位字符,不能有空格。

首先,先向表格中的用戶名和密碼區,插入塊標簽,用來顯示判斷的結果(用戶名/密碼格式是否正確)

<!-- 表格第一行有兩個單元格:用戶名 + 輸入用戶名信息區域 + 用戶名是否符合 -->
<tr>
    <!-- 定義一個標簽:用戶名 -->
    <td class="td_left"><label for="username">用戶名</label></td>
    <!-- 定義輸入用戶名信息的框框、用戶名是否符合 -->
    <td class="td_right">
        <input type="text" name="username" id="username" placeholder="請輸入用戶名">
        <span id="s_username" class="error"></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="s_password" class="error"></span>
    </td>
</tr>

如上,在table中添加的內容是:

<span id="s_username" class="error"></span>
和
<span id="s_password" class="error"></span>

具體功能的實現

校驗用戶名

// 校驗用戶名
function checkUsername(){
    // 1.獲取用戶名的值
    var username = document.getElementById("username").value;
    // 2.定義正則表達式
    var reg_username = /^\w{6,12}$/;
    // 3.判斷值是否符合正則的規則
    var flag = reg_username.test(username);
    // 4.提示信息
    var s_username = document.getElementById("s_username");
    if(flag){
        // 提示綠色對勾
        s_username.innerHTML = "<img width='35' height='25' src='img/gou.png'/>";
    }else{
        // 提示紅色用戶名有誤
        s_username.innerHTML = "用戶名格式有誤";
    }
    return flag;
}

校驗密碼

// 校驗密碼
function checkPassword(){
    // 1.獲取用戶名的值
    var password = document.getElementById("password").value;
    // 2.定義正則表達式
    var reg_password = /^\w{6,12}$/;
    // 3.判斷值是否符合正則的規則
    var flag = reg_password.test(password);
    // 4.提示信息
    var s_password = document.getElementById("s_password");
    if(flag){
        // 提示綠色對勾
        s_password.innerHTML = "<img width='35' height='25' src='img/gou.png'/>";
    }else{
        // 提示紅色用戶名有誤
        s_password.innerHTML = "密碼格式有誤";
    }
    return flag;
}

所有的實現代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊頁面</title>
    <style>
        body {
            background: url("./img/register_bg.png");
        }
        
        .rg_layout {
            width: 900px;
            height: 500px;
            border: 8px solid #EEEEEE;
            background-color: white;
            margin: auto;
        }
        
        .rg_left {
            float: left;
            margin: 15px;
        }
        .rg_center {
            float: left;
        }
        .rg_right {
            float: right;
            margin: 15px;
        }
        
        .rg_left > p:first-child {
            color:#FFD026;
            font-size: 20px;
        }

        .rg_left > p:last-child {
            color:#A6A6A6;
            font-size: 20px;
        }
        
        .rg_right > p:first-child {
            font-size: 15px;

        }
        .rg_right p a {
            color:pink;
        }
        
        .td_left {
            width: 100px;
            height: 45px;
            text-align: right;
        }
        .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 ;
        }
        
        .error {
            color:red;
        }
        #td_sub {
            padding-left: 150px;
        }
    </style>
    <script>
        window.onload = function(){
            document.getElementById("form").onsubmit = function(){
                return checkUsername() && checkPassword();
            };
            document.getElementById("username").onblur = checkUsername;
            document.getElementById("password").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 width='35' height='25' src='img/gou.png'/>";
            }else{
                s_username.innerHTML = "用戶名格式有誤";
            }
            return flag;
        }
        
        function checkPassword(){
            var password = document.getElementById("password").value;
            var reg_password = /^\w{6,12}$/;
            var flag = reg_password.test(password);
            var s_password = document.getElementById("s_password");
            if(flag){
                s_password.innerHTML = "<img width='35' height='25' src='img/gou.png'/>";
            }else{
                s_password.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="#" id="form" method="get">
                <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="s_username" class="error"></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="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" 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" checked> 男
                            <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" id="td_sub"><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>

復制以上代碼,使用和上面的圖片素材(注意要修改圖片路徑),創建html文件,用瀏覽器打開該文件,進行測試吧!!!

img


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM