天天看點

任務卡_04-前端技術_正規表達式【表單驗證】

目錄

​​一,表單正則驗證校驗任務訓練​​

​​1,任務概述​​

​​2,任務過程​​

​​3,可能遇到的問題​​

​​4,參考代碼​​

​​4.1 運作結果​​

​​4.2 程式設計思路​​

​​4.3 參考代碼​​

一,表單正則驗證校驗任務訓練

1,任務概述

程式猿小明需要為公司員工的個人資訊錄入編寫前端代碼,效果如下圖 

需求:要保證資訊錄入格式正确無遺漏(輸入有誤要給到對應提示)

任務卡_04-前端技術_正規表達式【表單驗證】

2,任務過程

使用 HTML+CSS 布局出如上圖所示頁面效果 

嵌入 JS 代碼,添加表單送出和表單項失去焦點等事件處理 

在事件進行中按照表單項後面提示的資訊完成對應表單驗證操作 

為代碼添加适量注釋說明,注意代碼排版整潔

3,可能遇到的問題

單選和下拉框無須添加失去焦點事件(因為隻有輸入框需要) 

正規表達式的使用

4,參考代碼

4.1 運作結果

任務卡_04-前端技術_正規表達式【表單驗證】

4.2 程式設計思路

編寫HTML頁面樣式:form表單(input标簽的text普通文本框,password密碼輸入框,ratio單選。以及select标簽的下拉菜單);

補充表單填寫規則(通過text标簽設定樣式,并用 空格進行對齊);

為各個輸入選擇項綁定失去焦點屬性onblur對應的函數,并為form設定onsubmit屬性對應的函數;

利用正規表達式編寫表單驗證規則;

調整頁面為【送出後不重新整理頁面】,這樣點選送出按鈕後,如果有選項填寫錯誤,隻需修改對應内容即可,不必全部重新填寫;

注意:

手機号碼驗證方法:參考​​@北極光LG【使用正規表達式驗證手機号碼】​​

  • 規定第一位數字輸入的必須是1,第二位數字輸入的必須是3,4,5,7,8其中的一位,後面的隻能輸入0-9的數字,不能輸入字母或其他的字元,輸入的必須是一個十一位數的号碼

4.3 參考代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>個人資訊登記表</h1>
    <form action="" method="POST" name="myform" onsubmit="doSubmit()" target="iframe">
        登入賬号:<input type="text" name="account" onblur="checkAccount()">
        <text style="color:gray;font-size: 14px;"> 6~18位有效數字(字母,數字,下劃線)</text><br><br>
        
        登入密碼:<input type="password" name="password" onblur="checkPassword()">
        <text style="color:gray;font-size: 14px;"> 6~18位任意字元</text><br><br>
        
        重複密碼:<input type="password" name="password2" onblur="recheckPassword()">
        <text style="color:gray;font-size: 14px;"> 重複密碼與登入密碼一緻</text><br><br>
        
        性  别:<input type="radio" name="sex" value="male" checked>男
        <input type="radio" name="sex" value="female" checked>女<br><br>
        
        年  齡:<input type="text" name="age" onblur="checkAge()">
        <text style="color:gray;font-size: 14px;"> 大于0的任意兩位整數</text><br><br>
        
        手機号碼:<input type="text" name="phone" onblur="checkPhone()">
        <text style="color:gray;font-size: 14px;"> 1開頭的11位整數</text><br><br>
        
        郵  箱:<input type="text" name="email" onblur="checkEmail()">
        <text style="color:gray;font-size: 14px;"> 有效的Email位址</text><br><br>
        
        學  曆:<select name="education" onblur="checkEducation()">
            <option value="0" selected>請選擇</option>
            <option value="1">大專</option>
            <option value="2">大學</option>
            <option value="3">碩士</option>
            <option value="4">博士</option>
        </select>
        <!-- 如果隻是在HTML中添加多個空格,隻能一個個複制,通過JavaScript可以簡化此步驟 -->
        <text style="color:gray;font-size: 14px;">         必須選擇一個學曆選項</text>
        <br><br>
        
        <input type="submit" value="送出"> 
        <input type="reset" value="重置">
    </form>
    <!-- 避免表單送出後重新整理頁面 -->
    <iframe id="iframe" name="iframe" style="display:none;"></iframe>
</body>
<script>
    // 檢查賬号
    function checkAccount(){
        var account = document.myform.account.value;
        // \w表示字母、數字、下劃線
        if(account.match(/^\w{6,18}$/) == null){
            alert("請輸入6~18位字元、數字、下劃線字元");
            return false
        }
        return true;
    }
    // 檢查密碼
    function checkPassword(){
        var password = document.myform.password.value;
        // .表示任意字元
        if(password.match(/^.{6,18}$/) == null){
            alert("請輸入6~18位任意字元");
            return false;
        }
        return true;
    }
    // 檢查密碼是否一緻
    function recheckPassword(){
        var password = document.myform.password.value;
        var password2 = document.myform.password2.value;
        if(password != password2){
            alert("兩次密碼輸入不一緻!");
            return false;
        }
        return true;
    }
    // 檢查年齡
    function checkAge(){
        var age = document.myform.age.value;
        if(age.match(/^\d{1,2}$/) == null){
            alert("請輸入1~99的整數");
            return false;
        }
        return true;
    }
    // 檢查電話号碼
    function checkPhone(){
        var phone = document.myform.phone.value;
        // 以1開頭的11位整數
        if(phone.match(/^[1][3,4,5,7,8][0-9]{9}$/) == null){
            alert("請輸入正确的電話号碼");
            return false;
        }
        return true;
    }
    // 檢查郵箱
    function checkEmail(){
        var email = document.myform.email.value;
        // 至少有任意字元(字母數字下劃線)+@至少有任意字元(字母數字下劃線)+1~3個.xxx結尾
        if(email.match(/^\w+@\w+(\.\w+){1,3}$/) == null) {
            alert("請輸入正确的Email位址");
            return false;
        }
        return true;
    }
    // 檢查學曆是否選擇
    function checkEducation(){
        var education = document.myform.education.value;
        if(education == 0){
            alert("請選擇一個學曆選項");
            return false;
        }
        return true;
    }
    function doSubmit(){
        if(checkAccount() && checkPassword() && recheckPassword() && checkAge() && checkPhone() && checkEmail() && checkEducation()){
            alert("送出成功!");
            return true;
        }else{
            return false;
        }
    }
</script>
</html>      

繼續閱讀