仅数字输入:
HTML
<input type="text" ng-model="employee.age" valid-input
input-pattern="[^0-9]+" placeholder="Enter an age" />
</label>
var app = angular.module('myApp', []);
app.controller('MainCtrl', function($scope) {
});
app.directive('validInput', function() {
return {
require: '?ngModel',
scope: {
"inputPattern": '@'
},
link: function(scope, element, attrs, ngModelCtrl) {
var regexp = null;
if (scope.inputPattern !== undefined) {
regexp = new RegExp(scope.inputPattern, "g");
}
if(!ngModelCtrl) {
return;
}
ngModelCtrl.$parsers.push(function(val) {
if (regexp) {
var clean = val.replace(regexp, '');
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
return clean;
}
else {
return val;
}
});
element.bind('keypress', function(event) {
if(event.keyCode === 32) {
event.preventDefault();
}
});
}
}});
为什么上面的 angularjs 代码如此复杂?要有一个只有数字的文本输入,可以使用正则表达式使用普通的javascript来完成。
我想知道为什么这么长的angularjs代码如此有名?
难道不能比这更简单吗?
尝试以下方法,希望它有效,包括修剪空格,
<input type="text" ng-model="employee.age"
ng-pattern="^d+$/|/[^s*]/" placeholder="Enter an age" />