【it修真院小課堂第132期】angular js常用指令 ng-blur妻味、ng-change、ng-focus欣福、ng-disabled是如何運用到表單驗證中的责球?

1.背景介紹

1.1原生js表單驗證的劣勢

我們在獲取用戶輸入值的時候,有一個必要的環(huán)節(jié)就是進(jìn)行表單驗證拓劝,javascript有一些好用的表單驗證功能雏逾,但是也存在一些問題,比如進(jìn)行簡單的事件監(jiān)聽往往需要寫大量的獲取數(shù)據(jù)以及數(shù)據(jù)呈現(xiàn)的代碼

1.2angular js在表單驗證中的優(yōu)勢

angular在數(shù)據(jù)獲取郑临、動態(tài)綁定栖博、頁面呈現(xiàn)等方面有很大的優(yōu)勢,可以將大量繁多的代碼進(jìn)行簡化牧抵,在表單驗證方面笛匙,angular也有其特殊的優(yōu)勢

2.知識剖析

2.1ng-blur

ng-blur 指令用于告訴 AngularJS HTML 元素在失去焦點時需要執(zhí)行的表達(dá)式;

AngularJS 中的 ng-blur 指令不會覆蓋原生的 onblur 事件犀变, 如果觸發(fā)該事件妹孙,ng-blur 表達(dá)式與原生的 onblur 事件都會執(zhí)行。

2.2ng-focus

ng-focus 指令用于告訴 AngularJS 在 HTML 元素獲取焦點時需要執(zhí)行的操作ng-focus 指令不會覆蓋元素的原始 onfocus 事件, 事件觸發(fā)時获枝,ng-focus表達(dá)式與原始的 onfocus 事件將都會執(zhí)行蠢正。

2.3ng-change

ng-change 指令用于告訴 AngularJS 在 HTML 元素值改變時需要執(zhí)行的操作,ng-change 指令需要搭配 ng-model 指令使用省店。ng-change 事件在值的每次改變時觸發(fā)嚣崭,它不需要等待一個完成的修改過程,或等待失去焦點的動作懦傍,ng-change 事件只針對輸入框值的真實修改雹舀,而不是通過 JavaScript 來修改。

2.4ng-disable

ng-disabled 指令設(shè)置表單輸入字段的 disabled 屬性(input, select, 或 textarea)粗俱。如果 ng-disabled 中的表達(dá)式返回 true 則表單字段將被禁用说榆。

3.常見問題

一般網(wǎng)上只給出每個方法的單獨的使用方法,比較簡單寸认,但在實際的表單驗證的過程中签财,需要將不同的方法結(jié)合起來,通過變量值來判斷如何將表單驗證結(jié)果呈現(xiàn)出來偏塞,而controller中一般設(shè)置好判斷函數(shù)唱蒸,跟具體的情況來改變量的值。

4.解決方案

ng-blur/ng-change/ng-focus的用法是類似的灸叼,都是當(dāng)某個事件觸發(fā)時神汹,可以進(jìn)行變量值變化或啟用函數(shù)庆捺;

ng-disabled和ng-hide用法是類似的,都是可以改變頁面呈現(xiàn)的效果慎冤,而效果則取決于某個變量值疼燥;

這兩類方法需要通過變量配合起來使用,變量通過controller來進(jìn)行控制蚁堤;

5.編碼實戰(zhàn)

上圖為表單驗證demo的UI

我們給input輸入框設(shè)置ng-blur、ng-change功能但狭,當(dāng)input失焦時披诗,ng-blur會觸發(fā),然后啟動inputCheck()函數(shù)立磁;同樣的呈队,當(dāng)輸入框內(nèi)容改變時,會觸發(fā)ng-minCheck()函數(shù)唱歧。最底下兩個div是提示框宪摧,設(shè)置了ng-hide指令,提示框的隱藏或顯示會根據(jù)變量var1和var2的布爾值來判斷颅崩。


上圖為inputCheck函數(shù)几于,用來檢驗輸入框輸入的值是否為空


上圖為minCheck函數(shù),用來檢驗輸入框輸入的位數(shù)是否小于5


上圖為給變量var1和var2設(shè)置的初始值沿后,讓提示框最初狀態(tài)為隱藏


上圖為失焦的時候出現(xiàn)了提示框


上圖為輸入框輸入位數(shù)小于5的時候沿彭,會提示位數(shù)小于5

目前實現(xiàn)了基本的功能,即ng-blur事件和ng-change事件都可以正常觸發(fā)尖滚,函數(shù)也可以

正常對輸入框的值進(jìn)行判斷喉刘,但是現(xiàn)在依然存在一些問題:

1.ng-blur事件是在失焦之后觸發(fā),但是事件發(fā)生以后卻無法改變漆弄,它自己不能再根據(jù)值的變化變回去了睦裳,

這會導(dǎo)致輸入框在開始輸入值的時候,ng-blur觸發(fā)的事件依然存在

2.ng-change觸發(fā)以后撼唾,如果用戶最終沒有任何值輸入廉邑,那么ng-blur事件觸發(fā)的時候,

ng-change事件留下來的提示框就不該顯示了券坞,但由于同樣的原因鬓催,依舊會顯示出來,

如下圖所示:


上圖為兩種驗證同時出現(xiàn)的bug

因此我們需要對代碼再進(jìn)行一波調(diào)試:

$scope.var2=true恨锚;可以保證用戶在輸入值為空的情況下宇驾,位數(shù)提示框就不顯示了


在位數(shù)檢測函數(shù)中,添加了一個if語句判斷猴伶,就是加入用戶已經(jīng)開始輸入了课舍,那么必填項

輸入框就應(yīng)該消失塌西;

調(diào)試完之后,我們的這個簡單的表單驗證功能就實現(xiàn)了

6.擴展思考

angular還有那些好用的表單驗證功能筝尾?

7.參考文獻(xiàn)

菜鳥教程

8.更多思考

ng-message有什么優(yōu)勢

PPT鏈接:https://ptteng.github.io/PPT/PPT/js-08-ng-blur%20.html#/

視頻鏈接:https://v.qq.com/x/page/b0512gnftq5.html


【it修真院-線上小課堂】ng-blur等表單驗證_騰訊視頻

技能樹.IT修真院

“我們相信人人都可以成為一個工程師捡需,現(xiàn)在開始,找個師兄筹淫,帶你入門站辉,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷盟鸾”饰剥。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線摧阅,學(xué)習(xí)透明化汰蓉,成長可見化,師兄1對1免費指導(dǎo)棒卷」四酰快來與我一起學(xué)習(xí)吧?!

www.jnshu.com/login/1/95798135

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末比规,一起剝皮案震驚了整個濱河市若厚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苞俘,老刑警劉巖盹沈,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吃谣,居然都是意外死亡乞封,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門岗憋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肃晚,“玉大人,你說我怎么就攤上這事仔戈」卮” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵监徘,是天一觀的道長晋修。 經(jīng)常有香客問我,道長凰盔,這世上最難降的妖魔是什么墓卦? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮户敬,結(jié)果婚禮上落剪,老公的妹妹穿的比我還像新娘睁本。我一直安慰自己,他們只是感情好忠怖,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布呢堰。 她就那樣靜靜地躺著,像睡著了一般凡泣。 火紅的嫁衣襯著肌膚如雪枉疼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天鞋拟,我揣著相機與錄音往衷,去河邊找鬼。 笑死严卖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的布轿。 我是一名探鬼主播哮笆,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汰扭!你這毒婦竟也來了稠肘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萝毛,失蹤者是張志新(化名)和其女友劉穎项阴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笆包,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡环揽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年素挽,在試婚紗的時候發(fā)現(xiàn)自己被綠了间护。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡劝篷,死狀恐怖巴粪,靈堂內(nèi)的尸體忽然破棺而出通今,到底是詐尸還是另有隱情,我是刑警寧澤肛根,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布辫塌,位于F島的核電站,受9級特大地震影響派哲,放射性物質(zhì)發(fā)生泄漏臼氨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一狮辽、第九天 我趴在偏房一處隱蔽的房頂上張望一也。 院中可真熱鬧巢寡,春花似錦、人聲如沸椰苟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舆蝴。三九已至谦絮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洁仗,已是汗流浹背层皱。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赠潦,地道東北人叫胖。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像她奥,于是被迫代替她去往敵國和親瓮增。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容