angularJS限制 input-text 只能輸入數字


最初的目的是為了讓輸入的字段僅為數字,不要包含英文,理所當然想到了正則表達,比起對每一個字符判斷ASCII碼要方便的多

JS正則表達式的使用,可以參考正則表達式

以match為例,全局匹配非數字

1 var reg = /\D/g;
2 var str = "abc12def";
3 var result = str.match(reg);  //['abc','def']

結果會以數組的形式展示,因此不難發現,若數組長度為0,則全為數字。

 

但是,以怎樣的形式表達“輸入的字符全是數字”比較穩妥?

各有說法,有人認為通過字符過濾,當用戶輸入非數字時,字符會顯示一瞬間然后因為不符合過濾要求被刪除。

參考了張志成在知乎上的回答,一種只保留數字的簡單寫法。

<input type="text" id="text" ng-model="item.attr" ng-keyup="clearNum(item,'attr')">
var app = angular.module("myApp",[]);
app.controller("myCtrl", function ($scope) {
    $scope.clearNum = function(obj, attr){
        obj[attr] = obj[attr].replace(/\D/g,"");
    }
});

但是這樣的效果用戶體驗很糟糕。

未完待續。。。。明天更!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM