2016-01-31 65 views
1

我在html页面上有许多输入框。我想限制用户输入2位小数后的任何数字。以角度限制2位小数后的输入字段

+0

您可以讨论到目前为止您尝试过哪些解决方案,您已经研究过哪些资源来尝试解决您的问题,还是可以介绍代码的当前状态以供进一步分析? – Chase

+1

我尝试使用下面的方法,http://stackoverflow.com/questions/16134391/restrict-number-of-decimals-in-html5-type-number-input-field-with-angularjs-m,它的工作 – OptimusPrime

回答

3

吉尔赫尔梅费雷拉描述它在其博客上:

Angularjs input number with two decimal places

创建具有号码类型和步骤的数量输入inerval

<input type="number" name="myDecimal" placeholder="Decimal" ng-model="myDecimal" *step="0.01" /> 

设置正则表达式使用NG-验证输入模式。在这里,我想,最大的2位小数,并用点分隔只接受数字

<input type="number" name="myDecimal" placeholder="Decimal" ng-model="myDecimal" ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/" step="0.01" /> 

编辑: ​​

angular.directive('decimalPlaces',function(){ 
    return { 
     link:function(scope,ele,attrs){ 
      ele.bind('keypress',function(e){ 
       var newVal=$(this).val()+(e.charCode!==0?String.fromCharCode(e.charCode):''); 
       if($(this).val().search(/(.*)\.[0-9][0-9]/)===0 && newVal.length>$(this).val().length){ 
        e.preventDefault(); 
       } 
      }); 
     } 
    }; 
}); 

然后:

此使用指令,以便接近问题在您的HTML代码中使用它:

<input type="number" step="0.01" ng-model='somemodel' decimal-places> 
+0

谢谢为答复。但输入字段仍然允许我输入小数点后的数字。 – OptimusPrime

+1

看看这个SO:http://stackoverflow.com/questions/16134391/restrict-number-of-decimals-in-html5-type-number-input-field-with-angularjs-m – Tomislav

+0

谢谢Tomislav,它工作。 – OptimusPrime

-1

您可以使用此指令来实现相同。

.directive('validNumber', function() { 
    return { 
     require: '?ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      if (!ngModelCtrl) { 
       return; 
      } 

      ngModelCtrl.$parsers.push(function (val) { 
       var clean = val.replace(/[^0-9\.]+/g, ''); 
       if (val !== clean || val.indexOf('.') != val.lastIndexOf('.')) { 
        if (val.indexOf('.') != val.lastIndexOf('.')) { 
         clean = clean.substring(0, clean.length - 1) 
        } 
       } 

       if (clean.indexOf('.') != -1) { 
        if (clean.length > (clean.indexOf('.') + 3)) { 
         clean = clean.substring(0, clean.length - 1) 
        } 
       } 


       ngModelCtrl.$setViewValue(clean); 
       ngModelCtrl.$render(); 
       return clean; 


      }); 

      element.bind('keypress', function (event) { 
       if (event.keyCode === 32) { 
        event.preventDefault(); 
       } 
      }); 
     } 
    }; 
}) 

该指令验证数字输入,并限制输入字段中的两个小数点。

相关问题