最初的目的是為了讓輸入的字段僅為數字,不要包含英文,理所當然想到了正則表達,比起對每一個字符判斷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,""); } });
但是這樣的效果用戶體驗很糟糕。
未完待續。。。。明天更!