我有一个指令,它验证输入数字,并允许您以这种格式输入数字:0000.00000
一切正常,但仅限Chrome。当我打开Mozilla时它会吃掉我的逗号。我曾尝试使用ng-trim
,但它不起作用。有没有人有这样的问题?
我的指令与验证规则:
.directive('float', function() {
var isValid = function(str) {
// return true;
var regex = /^(?:[1-9]\d*|0)?(?:(\.|,)\d{1,5})?$/;
return regex.test(str);
};
return {
require: 'ngModel',
link: function(scope, elm, attrs, ngModelCtrl) {
ngModelCtrl.$parsers.unshift(function(viewValue) {
var validate = isValid(viewValue);
ngModelCtrl.$setValidity('float', validate);
return validate ? parseFloat(viewValue.replace(',', '.')) : null;
});
elm.bind('keyup change', function() {
if (angular.isFunction(ngModelCtrl.$viewValue.replace)) {
ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue.replace(/[^\d{0,16}(.|,)]/g, ""));
ngModelCtrl.$render();
scope.$apply();
}
});
}
};
});
这是我的输入字段:
<label class="control-label">Amount min</label>
<div class="controls">
<input
type="number"
step="any"
min="0"
ng-model="form.amount_min"
float
name="amount_min"
minmax='{"name": "amount_max", "order": "minimum"}'
validerror="{name: 'amount_min'}"
ng-trim="false">
</div>