我有一个type =“text”的文本字段但它允许输入e ..我甚至想要防止这种情况发生我们怎么能这样做?
<input class="form-control" maxlength="12" ng-model="$ctrl.NumberInput" type="number"
min="0" required focus>
有人可以帮忙!
答案 0 :(得分:2)
您可以使用以下指令,该指令仅限制数字
app.directive('validNumber', function() {
return {
require: '?ngModel',
link: function(scope, element, attrs, ngModelCtrl) {
if(!ngModelCtrl) {
return;
}
ngModelCtrl.$parsers.push(function(val) {
if (angular.isUndefined(val)) {
var val = '';
}
var clean = val.replace(/[^-0-9\.]/g, '');
var negativeCheck = clean.split('-');
var decimalCheck = clean.split('.');
if(!angular.isUndefined(negativeCheck[1])) {
negativeCheck[1] = negativeCheck[1].slice(0, negativeCheck[1].length);
clean =negativeCheck[0] + '-' + negativeCheck[1];
if(negativeCheck[0].length > 0) {
clean =negativeCheck[0];
}
}
if(!angular.isUndefined(decimalCheck[1])) {
decimalCheck[1] = decimalCheck[1].slice(0,2);
clean =decimalCheck[0] + '.' + decimalCheck[1];
}
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
return clean;
});
element.bind('keypress', function(event) {
if(event.keyCode === 32) {
event.preventDefault();
}
});
}
};
});
<强> DEMO 强>
如果您不想使用指令,请使用ng-pattern
<input type="text" ng-model="$ctrl.numberInput" ng-pattern="/[^0-9]/g" required />
<强> DEMO 强>
答案 1 :(得分:2)
您可以尝试最简单的方式:ng-pattern
tryCatch