自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

手把手教你使用JavaScript實(shí)現(xiàn)表單驗(yàn)證

開發(fā) 前端
在Web項(xiàng)目開發(fā)中,經(jīng)常會(huì)看到表單驗(yàn)證的功能。例如,用戶注冊(cè)、用戶登錄等,需要對(duì)用戶填寫的內(nèi)容進(jìn)行驗(yàn)證。接下來(lái),小編帶著大家一起來(lái)實(shí)現(xiàn)表單驗(yàn)證的用戶名、密碼、性別、手機(jī)號(hào)碼、郵箱驗(yàn)證的功能。

[[387172]]

一、前言

在Web項(xiàng)目開發(fā)中,經(jīng)常會(huì)看到表單驗(yàn)證的功能。例如,用戶注冊(cè)、用戶登錄等,需要對(duì)用戶填寫的內(nèi)容進(jìn)行驗(yàn)證。接下來(lái),小編帶著大家一起來(lái)實(shí)現(xiàn)表單驗(yàn)證的用戶名、密碼、性別、手機(jī)號(hào)碼、郵箱驗(yàn)證的功能。

二、項(xiàng)目準(zhǔn)備

開發(fā)工具:HBuilderX

瀏覽器:Google Chrome瀏覽器

三、項(xiàng)目目標(biāo)

1.了解什么是正則表達(dá)式。

2.掌握正則表達(dá)式的語(yǔ)法。

3.學(xué)會(huì)應(yīng)用正則表達(dá)式。

四、項(xiàng)目實(shí)現(xiàn)

HTML

  1. <div class="box"
  2.             <div class="box-head"><h1>歡迎注冊(cè)</h1><p style="font-size: 15px;">已有賬號(hào)?<a href="#" style="color: #3366D4;">登錄</a></p></div> 
  3.             <div class="box-body"
  4.                 <form id="register" > 
  5.                     <table
  6.                         <tr> 
  7.                             <th>用戶名稱:</th> 
  8.                             <td> 
  9.                                 <input type="text" id="user" name="user" placeholder="長(zhǎng)度4-12位,英文大小寫字母"
  10.                             </td> 
  11.                             <td> 
  12.                                 <div></div> 
  13.                             </td> 
  14.                         </tr> 
  15.                         <tr> 
  16.                             <th>密  碼:</th> 
  17.                             <td><input type="password" id="passWord" name="passWord" placeholder="長(zhǎng)度6-20位,大小寫字母、數(shù)字或下劃線"></td> 
  18.                             <td> 
  19.                                 <div></div> 
  20.                             </td> 
  21.                         </tr> 
  22.                         <tr> 
  23.                             <th>確認(rèn)密碼:</th> 
  24.                             <td><input type="password" id="repassWord" name="repassWord" placeholder="請(qǐng)?jiān)俅屋斎朊艽a進(jìn)行確認(rèn)"></td> 
  25.                             <td> 
  26.                                 <div></div> 
  27.                             </td> 
  28.                         </tr> 
  29.                         <tr> 
  30.                             <th>性  別:</th> 
  31.                             <td><input type="radio" id="Male" name="sex" value="1"/><label for="Male">男</label>   
  32.                                 <input type="radio" id="Female" name="sex" value="0"/><label for="Female">女</label></td> 
  33.                             <td> 
  34.                                 <div></div> 
  35.                             </td> 
  36.                         </tr> 
  37.                         <tr> 
  38.                             <th>手機(jī)號(hào)碼:</th> 
  39.                             <td><input type="text" id="telephone" name="telephone" placeholder="13、14、15、17、18開頭的11位手機(jī)號(hào)"></td> 
  40.                             <td> 
  41.                                 <div></div> 
  42.                             </td> 
  43.                         </tr> 
  44.                         <tr> 
  45.                             <th>電子郵箱:</th> 
  46.                             <td><input type="text" id="email" name="email" placeholder="用戶名@域名(域名后綴至少2個(gè)字符)"></td> 
  47.                             <td> 
  48.                                 <div></div> 
  49.                             </td> 
  50.                         </tr> 
  51.                     </table
  52.                     <div style="display: flex;justify-content: center;"
  53.                         <button type="submit" id="btn_ok">注冊(cè)</button> 
  54.                     </div> 
  55.                 </form> 
  56.             </div> 
  57.         </div> 

在上面代碼中,使用table標(biāo)簽元素表示定義一個(gè)HTML表格,tr表示表格中的行,td表示表格中的列。name表示獲取對(duì)應(yīng)文本的正則規(guī)則驗(yàn)證,placeholder屬性表示提示信息。

JavaScript

1.添加事件

  1. // 獲取所有input框 
  2.         var inputs = document.getElementsByTagName('input'); 
  3.         // 為每個(gè)input框添加失去焦點(diǎn)事件 
  4.         for (var i = 0; i < inputs.length; i++) { 
  5.             inputs[i].onblur = inputBlur; 
  6.         } 

在上面代碼中,首先是獲取用戶注冊(cè)頁(yè)面所有的input元素,為每個(gè)input框添加失去焦點(diǎn)事件,利用for循環(huán)來(lái)添加事件處理函數(shù)inputBlur()。

2.寫inputBlur()事件處理函數(shù),該函數(shù)主要用于獲取相應(yīng)input元素的驗(yàn)證規(guī)則和提示信息,用戶輸入的內(nèi)容進(jìn)行檢驗(yàn),之后,把檢驗(yàn)的結(jié)果顯示在HTML頁(yè)面中,代碼如下所示:

  1. function inputBlur() { 
  2.             // 獲取輸入框的name值、value值、框中的提示信息 
  3.             var name = this.name;            
  4.             var val = this.value;  
  5.             var display = this.placeholder;    
  6.             var display_obj = this.parentNode.parentNode.children[2].children[0];  //顯示提示信息 
  7.             //去掉兩端空格 
  8.             val = val.trim(); 
  9.             //判斷內(nèi)容為空,顯示提示信息 
  10.             if (!val) { 
  11.                 error(display_obj, '輸入框內(nèi)容不能為空'); 
  12.                 return false
  13.             } 
  14.             //獲取正則匹配規(guī)則和提示信息 
  15.             var reg_msg = getRegMsg(name, display); 
  16.             //檢測(cè)是否正則匹配 
  17.             if (reg_msg['reg'].test(val)) { 
  18.                 // 匹配成功 
  19.                 success(display_obj, reg_msg['msg']['success']); 
  20.             } else { 
  21.                 // 匹配失敗 
  22.                 error(display_obj, reg_msg['msg']['error']); 
  23.             } 
  24.         } 

在上面代碼中,變量名name、val、tips分別是獲取input元素中的name、value、placeholder屬性的值。

變量名tips_obj用于當(dāng)input元素失去焦點(diǎn)的時(shí)候,顯示提示信息。

val.trim()方法主要是用戶輸入內(nèi)容中兩端空格。

getRegMsg()自定義函數(shù)用來(lái)獲取文本框中相對(duì)應(yīng)的正則和提示信息。

test()方法用于獲取當(dāng)前input框輸入的內(nèi)容是否是正則匹配的模式,如果是則返回true,顯示驗(yàn)證成功的信息。如果不是則返回false,顯示錯(cuò)誤的信息。

3.編寫error()和success()函數(shù)分別用于驗(yàn)證錯(cuò)誤信息、成功信息

  1. // 成功 
  2.         function success(obj, msg) { 
  3.             obj.className = 'success'
  4.             obj.innerHTML = msg; 
  5.         } 
  6.  
  7.         // 失敗 
  8.         function error(obj, msg) { 
  9.             obj.className = 'error'
  10.             obj.innerHTML = msg + ',請(qǐng)重新輸入'
  11.         } 

在上面代碼中,obj參數(shù)表示顯示提示信息的元素對(duì)象,msg參數(shù)表示自定義的錯(cuò)誤信息。

4.獲取驗(yàn)證規(guī)則和提示信息getRegMsg()函數(shù)

項(xiàng)目分析

① 用戶名:長(zhǎng)度4~12,英文大小寫字母。

正則:/^[a-zA-Z]{4,12}$/。

② 密碼:長(zhǎng)度6~20,大小寫字母、數(shù)字或下劃線。

正則:/^.{6,20}$/。

③ 確認(rèn)密碼:要求與密碼框一樣,且兩次輸入相同。

正則:RegExp(‘^’ + 密碼框的值 + '$')

④ 性別:

正則:/^[0-1]*$/。

⑤ 手機(jī)號(hào)碼:13、14、15、17、18開頭的11位手機(jī)號(hào)。

正則:/^1[34578]\d{9}$/。

⑥郵箱:用戶名@域名(域名后綴至少2個(gè)字符)。

正則:/^(\w+(_|-|.)*)+@(\w+(-)?)+(.\w{2,})+$/。

代碼如下所示:

  1. function getRegMsg(name, display) { 
  2.             var reg = msg = ''
  3.             switch (name) { 
  4.                 case 'user'
  5.                     reg = /^[a-zA-Z]{4,12}$/; 
  6.                     msg = {'success''用戶名輸入正確''error': display}; 
  7.                     break; 
  8.                 case 'passWord'
  9.                     reg = /^.{6,20}$/; 
  10.                     msg = {'success''密碼輸入正確''error': display}; 
  11.                     break; 
  12.                 case 'repassWord'
  13.                     var con = document.getElementsByTagName('input')[1].value; 
  14.                     reg = RegExp("^" + con + "$"); 
  15.                     msg = {'success''兩次密碼輸入正確''error''兩次輸入的密碼不一致'}; 
  16.                     break; 
  17.                 case 'sex'
  18.                     reg = /^[0-1]*$/; 
  19.                     msg = {'success''性別已選擇''error''性別不能為空'}; 
  20.                     break; 
  21.                 case 'telephone':  
  22.                     reg=/^1[34578]\d{9}$/; 
  23.                     msg = {'success''手機(jī)號(hào)碼輸入正確''error': display}; 
  24.                     break; 
  25.                 case 'email'
  26.                     reg = /^(\w+(\_|\-|\.)*)+@(\w+(\-)?)+(\.\w{2,})+$/; 
  27.                     msg = {'success''郵箱輸入正確''error': display}; 
  28.                     break; 
  29.             } 
  30.             return {'reg': reg, 'msg': msg}; 
  31.         } 

在上面代碼中, "/^[a-zA-Z]{4,12}$/"表示匹配只包含大小寫的英文字母;

"/^.{6,20}$/"表示匹配由大小寫英文字母、數(shù)字或下劃線長(zhǎng)度在6-20范圍內(nèi);

"RegExp("^" + con + "$")"表示獲取用戶輸入的密碼,把它作為檢驗(yàn)確認(rèn)密碼是否正確的正則匹配模式;

" /^[0-1]*$/"表示數(shù)字1為男,數(shù)字0為女;

"/^1[34578]\d{9}$/"表示11位數(shù)的手機(jī)號(hào)碼,以1開頭,第二個(gè)數(shù)字可以是(3、4、5、7、8)其中的一個(gè)數(shù)字,剩下數(shù)字可以0-9之間任意數(shù)字;

"/^(\w+(_|-|.)*)+@(\w+(-)?)+(.\w{2,})+$/"表示匹配郵箱地址,它有三部分,分別是用戶名、”@“、郵箱域名。

效果圖如下所示:

 

本文案例參考《JavaScript前端開發(fā)案例教程》,黑馬程序員編著

五、總結(jié)

1.本文基于JavaScript基礎(chǔ),實(shí)現(xiàn)表單驗(yàn)證的功能。對(duì)每一個(gè)div層、table、tr、td標(biāo)簽元素進(jìn)行詳解,讓讀者更好的理解。

2.在JavaScript中首先是表單項(xiàng)添加失去焦點(diǎn)處理,事件處理函數(shù)為inputBlur()。該函數(shù)用于獲取表單name、value及提示信息后,去除空白后,若內(nèi)容為空調(diào)用error()給出提示,否則進(jìn)行驗(yàn)證。

3.代碼沒(méi)有那么復(fù)雜,希望對(duì)你有所幫助!

 

責(zé)任編輯:姜華 來(lái)源: 前端進(jìn)階學(xué)習(xí)交流
相關(guān)推薦

2021-04-02 10:01:00

JavaScript前端Web項(xiàng)目

2021-07-14 09:00:00

JavaFX開發(fā)應(yīng)用

2023-04-26 12:46:43

DockerSpringKubernetes

2020-05-15 08:07:33

JWT登錄單點(diǎn)

2022-12-07 08:42:35

2021-08-02 07:35:19

Nacos配置中心namespace

2009-11-09 14:57:37

WCF上傳文件

2011-01-06 10:39:25

.NET程序打包

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印機(jī)

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2025-01-13 09:07:12

2011-04-21 10:32:44

MySQL雙機(jī)同步

2021-01-19 09:06:21

MysqlDjango數(shù)據(jù)庫(kù)

2022-07-22 12:45:39

GNU

2021-12-15 08:49:21

gpio 子系統(tǒng)pinctrl 子系統(tǒng)API

2022-10-30 10:31:42

i2ccpuftrace

2021-08-18 07:29:41

密碼驗(yàn)證 PAT

2022-07-27 08:16:22

搜索引擎Lucene

2022-01-08 20:04:20

攔截系統(tǒng)調(diào)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)