国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

AngularJS自定義表單驗(yàn)證

gaomysion / 661人閱讀

摘要:在自定義的指令中,我們可以添加我們的驗(yàn)證方法到的對象上。驗(yàn)證碼在表單不合法時(shí)禁用提交按鈕提交保存成功判斷手機(jī)號是否重復(fù)驗(yàn)證兩次輸入的密碼是否相同的自定義驗(yàn)證當(dāng)值為空時(shí),通過驗(yàn)證,因?yàn)橛?/p>

Angular實(shí)現(xiàn)了大部分常用的HTML5的表單控件的類型(text, number, url, email, date, radio, checkbox),也實(shí)現(xiàn)了很多指令做為驗(yàn)證(required, pattern, minlength, maxlength, min, max)。
在自定義的指令中,我們可以添加我們的驗(yàn)證方法到ngModelController的$validators對象上。為了取得這個(gè)controller對象,我們需要requirengModel指令。
在$validators對象上的每個(gè)方法都接收modelValue和viewValue兩個(gè)值做為參數(shù)。在你綁定的驗(yàn)證方法返回一個(gè)值(true,false)之后,Angular會在內(nèi)部調(diào)用$setValidity方法。驗(yàn)證會在每一次輸入框的值改變($setViewValue被調(diào)用)或者模型的值改變。驗(yàn)證發(fā)生在$parsers和$formatters成功運(yùn)行之后,驗(yàn)證不通過的項(xiàng)會做為ngModelController.$error的屬性存儲起來。
另外,在這個(gè)controller對象上,還有一個(gè)$asyncValidators對象,如果你的驗(yàn)證是異步的,則需要加驗(yàn)證附加在這個(gè)對象上,比如說用戶注冊時(shí)輸入手機(jī)號,我們需要在后端驗(yàn)證該手機(jī)號是否已經(jīng)注冊,這個(gè)驗(yàn)證方法必須return一個(gè)promise對象,然后在驗(yàn)證通過時(shí)調(diào)用延遲對象的resolve,失敗時(shí)調(diào)用reject,還未完成的異步的驗(yàn)證存儲在ngModelController.$pending中。

例如(注意其中的user對象,只有驗(yàn)證通過了,才會將值綁定到模型上):

用戶對象

  
    {{ user | json }}  
"use strict";  
angular.module("app", [])  
  
.directive("phone", function ($q, $http) {  
    return {  
        require: "ngModel",  
        link: function (scope, ele, attrs, ctrl) {  
            ctrl.$asyncValidators.phone = function (modelValue, viewValue) {  
                var d = $q.defer();  
                $http.get("phone.json")  
                .success(function (phoneList) {  
                    if (phoneList.indexOf(parseInt(modelValue)) >= 0) {  
                        d.reject();  
                    } else {  
                        d.resolve();  
                    }  
                });  
                return d.promise;  
            }  
        }  
    }  
})  
  
.directive("username", function ($q, $http) {  
    return {  
        require: "ngModel",  
        link: function (scope, ele, attrs, ctrl) {  
            ctrl.$validators.username = function (modelValue, viewValue) {  
                if (modelValue) {  
                    return modelValue.length > 5 ? true : false;  
                };  
                return false;  
            }  
        }  
    }  
})  
[  
    13758262732,  
    15658898520,  
    13628389818,  
    18976176895,  
    13518077986  
]  

效果:

下面一個(gè)完整的用戶注冊的表單驗(yàn)證:
html:

請注意! 用戶名不能帶#號。
請注意! 用戶名不能為空。
請注意! 密碼長度不能少于八位。
請注意! 密碼不能為空。
請注意! 兩次輸入的密碼不相同。
請注意! 請?jiān)俅屋斎朊艽a。
請注意! 該手機(jī)號已注冊過,可直接登錄。
請注意! 請輸入正確的手機(jī)號。
"use strict";  
angular.module("app", [])  
.controller("myCtrl", function ($scope) {  
    $scope.data = {};  
    $scope.save = function () {  
        alert("保存成功!")  
    }  
})  
  
// 判斷手機(jī)號是否重復(fù)  
.directive("phone", function ($q, $http) {  
    return {  
        require: "ngModel",  
        link: function (scope, ele, attrs, ctrl) {  
            ctrl.$asyncValidators.phone = function (modelValue, viewValue) {  
                var d = $q.defer();  
                $http.get("phone.json")  
                .success(function (phoneList) {  
                    if (phoneList.indexOf(parseInt(modelValue)) >= 0) {  
                        d.reject();  
                    } else {  
                        d.resolve();  
                    }  
                });  
                return d.promise;  
            }  
        }  
    }  
})  
  
// 驗(yàn)證兩次輸入的密碼是否相同的自定義驗(yàn)證  
.directive("pwdRepeat", function () {  
    return {  
        require: "ngModel",  
        link: function (scope, ele, attrs, ctrl) {  
  
            ctrl.$validators.pwdRepeat = function (modelValue) {  
  
                // 當(dāng)值為空時(shí),通過驗(yàn)證,因?yàn)橛衦equired  
                if (ctrl.$isEmpty(modelValue)) {  
                    return true;  
                }  
  
                return modelValue === scope.data._password ? true : false;  
            }  
        }  
    }  
})  
form-group {  
    position: relative;  
}  
.right {  
    position: absolute;  
    right: 10px;  
    top: 34px; 
    color: green";
} 

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/54358.html

相關(guān)文章

  • ngVerify - 更高效的 AngularJS 表單驗(yàn)證

    ngVerify v1.5.6 a easy AngularJS Form Validation plugin.簡潔高效的__表單驗(yàn)證插件__ See how powerful it.看看它有多強(qiáng)大 動態(tài)校驗(yàn) 自動關(guān)聯(lián)提交按鈕 多種 tip 校驗(yàn)消息提示 不只校驗(yàn) dom 元素值,還可以校驗(yàn) ngModel 數(shù)據(jù)模型 支持任意類型表單元素,甚至可以校驗(yàn)非表單元素 提供 type 類型校驗(yàn)?zāi)0?..

    shiina 評論0 收藏0
  • AngularJS定義表單驗(yàn)證

    摘要:在自定義的指令中,我們可以添加我們的驗(yàn)證方法到的對象上。驗(yàn)證碼在表單不合法時(shí)禁用提交按鈕提交保存成功判斷手機(jī)號是否重復(fù)驗(yàn)證兩次輸入的密碼是否相同的自定義驗(yàn)證當(dāng)值為空時(shí),通過驗(yàn)證,因?yàn)橛? Angular實(shí)現(xiàn)了大部分常用的HTML5的表單控件的類型(text, number, url, email, date, radio, checkbox),也實(shí)現(xiàn)了很多指令做為驗(yàn)證(required,...

    cocopeak 評論0 收藏0
  • AngularJS定義表單驗(yàn)證

    摘要:在自定義的指令中,我們可以添加我們的驗(yàn)證方法到的對象上。驗(yàn)證碼在表單不合法時(shí)禁用提交按鈕提交保存成功判斷手機(jī)號是否重復(fù)驗(yàn)證兩次輸入的密碼是否相同的自定義驗(yàn)證當(dāng)值為空時(shí),通過驗(yàn)證,因?yàn)橛? Angular實(shí)現(xiàn)了大部分常用的HTML5的表單控件的類型(text, number, url, email, date, radio, checkbox),也實(shí)現(xiàn)了很多指令做為驗(yàn)證(required,...

    xingpingz 評論0 收藏0
  • AngularJS表單驗(yàn)證

    摘要:表單和其中的表單控件提供了驗(yàn)證服務(wù),可以讓用戶在提交一般在點(diǎn)擊類型為的按鈕時(shí)提交表單前意識到自己有非法不符合要求,以下都將稱為非法的輸入。為了編寫一個(gè)可靠的應(yīng)用程序,服務(wù)端驗(yàn)證是不可或缺的。促發(fā)條件至于自定義表單驗(yàn)證,我會另寫一篇。 表單 網(wǎng)頁中用戶于服務(wù)端交互數(shù)據(jù)的表單控件有input、select、textarea,而表單是將為了達(dá)到一個(gè)目的(登錄、注冊等)各種控件整合到一起的一個(gè)...

    shenhualong 評論0 收藏0
  • AngularJS表單驗(yàn)證

    摘要:表單和其中的表單控件提供了驗(yàn)證服務(wù),可以讓用戶在提交一般在點(diǎn)擊類型為的按鈕時(shí)提交表單前意識到自己有非法不符合要求,以下都將稱為非法的輸入。為了編寫一個(gè)可靠的應(yīng)用程序,服務(wù)端驗(yàn)證是不可或缺的。促發(fā)條件至于自定義表單驗(yàn)證,我會另寫一篇。 表單 網(wǎng)頁中用戶于服務(wù)端交互數(shù)據(jù)的表單控件有input、select、textarea,而表單是將為了達(dá)到一個(gè)目的(登錄、注冊等)各種控件整合到一起的一個(gè)...

    zorpan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<