我尝试使用以下代码,文本区域接受大于 0 和小于 5 的数字,一切正常,但当涉及到十进制时,它无法验证。 下面是我的代码
<body ng-controller="MainCtrl">
<form name="myform">
<input type="number" min="0" name="minmax" ng-model="number" required="required" maxlength="10" numbers-only/>
<span ng-show="myform.$error.numbersOnly">Enter the numbers only between 0 to 5 </span>
</form>
</body>
这是控制器
var app = angular.module('plunker', []);
app.directive('numbersOnly', function(){
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
if(parseInt(inputValue) <= 5 && parseInt(inputValue) > 0){
modelCtrl.$setValidity('numbersOnly', true);
return inputValue;
} else {
modelCtrl.$setValidity('numbersOnly', false);
return modelCtrl.$modelValue;
}
});
}
};
});
function MyCtrl($scope) {
$scope.number = ''
}
这是我的工作 http://plnkr.co/edit/rOShiJYCZrXcgMdr951i?p=preview
在解决此问题之前,请阅读下面的讨论
HTML(5) 中有浮点输入类型吗?
现在,您需要在输入数字字段上设置
step="0.01
。 它将采用十进制和整数值。
<input type="number" name="minmax" ng-model="number" required="required" step="0.01 maxlength="10" numbers-only/>
普伦克
尝试使用 parseFloat
if(parseFloat(inputValue) <= 5 && parseFloat(inputValue) > 0){
和改变 input type="number"
到input type="text"