Custom指令在Mozilla中使用逗号

时间:2016-01-22 12:54:17

标签: angularjs

我有一个指令,它验证输入数字,并允许您以这种格式输入数字: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>

0 个答案:

没有答案