AngularJS使用ngMessages進行表單驗證
AngularJS 誕生于2009年,由Misko Hevery 等人創(chuàng)建,后為Google所收購。是一款優(yōu)秀的前端JS框架,已經(jīng)被用于Google的多款產(chǎn)品當(dāng)中。AngularJS有著諸多特性,最為核心的是:MVVM、模塊化、自動化雙向數(shù)據(jù)綁定、語義化標簽、依賴注入等等。
名稱為"ngMessages"的module,通過npm install angular-messages進行安裝。在沒有使用ngMessages之前,我們可能這樣寫驗證:
<form name="userForm"> <input type="text" name="username" ng-model="user.username" ng-minlength="3" ng-maxlength="8" required> <p ng-show="userForm.username.$error.minlength">Username is too short.</p> <p ng-show="userForm.username.$error.maxlength">Username is too long.</p> <p ng-show="userForm.username.$error.required">Your username is required.</p> </form>
以上,列舉了每種可能的驗證失敗,并且手工編寫是否顯示錯誤提示信息。
有了"ngMessages"這個module,大致這么寫:
<div class="help-block" ng-messages="userForm.name.$error" ng-if="userForm.name.$touched"> <p ng-message="minlength">用戶名最小長度5</p> <p ng-message="maxlength">用戶名最大長度10</p> <p ng-message="required">用戶名必填</p> </div>
ngMessages為我們自動判斷顯示哪種錯誤。
使用ngMessages的幾個關(guān)鍵點:
● npm install angular-messages
● 引用:angular-messages.js
● 依賴:angular.module('app',['ngMessages'])
這里有一個簡單的Demo,文件結(jié)構(gòu):
node_modules/
app.js
emailmessages.html
index.html
安裝如下:
npm install bootstrap
npm install angular
npm install angular-messages
==index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css"/> <style> body{ padding-top: 50px; } </style> </head> <body class="container" ng-app="app" ng-controller="MainCtrl as main"> <form name="userForm" novalidate> <div class="form-group" ng-class="{'has-error':userForm.name.$touched && userForm.name.$invalid}"> <label>用戶名</label> <input type="text" name="name" class="form-control" ng-model="main.name" ng-minlength="5" ng-maxlength="10" required/> <div class="help-block" ng-messages="userForm.name.$error" ng-if="userForm.name.$touched"> <p ng-message="minlength">用戶名最小長度5</p> <p ng-message="maxlength">用戶名最大長度10</p> <p ng-message="required">用戶名必填</p> </div> </div> <div class="form-group" ng-class="{'has-error':userForm.email.$touched && userForm.email.$invalid}"> <label>郵箱</label> <input type="email" name="email" class="form-control" ng-model="main.email" ng-minlength="5" ng-maxlength="20" required/> <div class="help-block" ng-messages="userForm.email.$error" ng-if="userForm.email.$touched"> <div ng-messages-include="emailmessages.html"></div> </div> </div> <div class="form-group"> <button type="submit" class="btn btn-danger">提交</button> </div> <pre>{{userForm.name.$error}}</pre> <pre>{{userForm.email.$error}}</pre> </form> <script src="node_modules/angular/angular.min.js"></script> <script src="node_modules/angular-messages/angular-messages.js"></script> <script src="app.js"></script> </body> </html>
app.js
angular.module('app',['ngMessages']) .controller('MainCtrl', MainCtrl); function MainCtrl(){ }
emailmessages.html
把有關(guān)email的表單驗證放在這里,通過<div ng-messages-include="emailmessages.html"></div>顯示到頁面某個位置上。
<p ng-message="required">郵箱必填</p> <p ng-message="minlength">郵箱長度太短</p> <p ng-message="maxlength">郵箱長度太長</p> <p ng-message="email">郵箱無效</p>
ps:常用的表單驗證指令
1. 必填項驗證
某個表單輸入是否已填寫,只要在輸入字段元素上添加HTML5標記required即可:
<input type="text" required />
2. 最小長度
驗證表單輸入的文本長度是否大于某個最小值,在輸入字段上使用指令ng-minleng= "{number}":
<input type="text" ng-minlength="5" />
3. 最大長度
驗證表單輸入的文本長度是否小于或等于某個最大值,在輸入字段上使用指令ng-maxlength="{number}":
<input type="text" ng-maxlength="20" />
4. 模式匹配
使用ng-pattern="/PATTERN/"來確保輸入能夠匹配指定的正則表達式:
<input type="text" ng-pattern="/[a-zA-Z]/" />
5. 電子郵件
驗證輸入內(nèi)容是否是電子郵件,只要像下面這樣將input的類型設(shè)置為email即可:
<input type="email" name="email" ng-model="user.email" />
6. 數(shù)字
驗證輸入內(nèi)容是否是數(shù)字,將input的類型設(shè)置為number:
<input type="number" name="age" ng-model="user.age" />
7. URL
驗證輸入內(nèi)容是否是URL,將input的類型設(shè)置為 url:
<input type="url" name="homepage" ng-model="user.facebook_url" />
相關(guān)文章
angular2/ionic2 實現(xiàn)搜索結(jié)果中的搜索關(guān)鍵字高亮的示例
這篇文章主要介紹了angular2/ionic2 實現(xiàn)搜索結(jié)果中的搜索關(guān)鍵字高亮的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08AngularJS中controller控制器繼承的使用方法
這篇文章主要介紹了AngularJS中controller控制器繼承的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11AngularJS的依賴注入實例分析(使用module和injector)
這篇文章主要介紹了AngularJS的依賴注入,結(jié)合實例形式分析了依賴注入的原理及使用module和injector實現(xiàn)依賴注入的步驟與操作技巧,需要的朋友可以參考下2017-01-01AngularJs定時器$interval 和 $timeout詳解
這篇文章主要介紹了AngularJs定時器$interval 和 $timeout詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05Angular實現(xiàn)可刪除并計算總金額的購物車功能示例
這篇文章主要介紹了Angular實現(xiàn)可刪除并計算總金額的購物車功能,涉及AngularJS事件響應(yīng)、元素遍歷與數(shù)值運算等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12