如何在角度js中添加三位数后的点

时间:2016-07-15 12:43:26

标签: javascript angularjs

我是新的角度js。我想输入模式XXX.XXXX。如果用户输入浮点值,那么它不应该做什么,但如果用户输入1234456(非十进制值)那么它将自动生成123.4560 如果用户输入12.909,那么它什么都不做。在第三个非十进制数字后,它应该添加点。请帮助

3 个答案:

答案 0 :(得分:0)

您将拥有一个在按键上运行或监视绑定值的功能。 检查字符串是否为数字,然后使用toFixed减去字符串长度的3,类似这样(未测试):

if (str.isNaN()) {
    return "";
} else {
    var length = (str.length - 3); 
    return str.toFixed(length);
}

答案 1 :(得分:0)

尝试按照它会有所帮助:

<强> JS

 var myApp = angular.module('myApp',[]);


function MyCtrl($scope) {
    $scope.onBlur = function($event) {

     var num = $scope.foo;

      if (num.indexOf(".") == -1 && num.length > 4)
      {
        $scope.foo = num.substring(0,3) + "." + num.substring(3);
      }    
    }
}

<强> HTML

<div ng-controller="MyCtrl">
    <input type="text" ng-model="foo" ng-blur="onBlur($event)"/>
</div>

Demo Fiddle

答案 2 :(得分:0)

您可以使用输入框的模糊事件的简单函数来实现此目的。

$scope.inputValue = "";
  $scope.checkDecimal  = function()
  {
    if(!isNaN($scope.inputValue) && $scope.inputValue % 1 !== 0)
    {
      alert("Its a decimal value");
    }
    else if(!isNaN($scope.inputValue) && $scope.inputValue.length > 3)
    {
      var deNominator = Math.pow(10, ($scope.inputValue.length - 3) );
      $scope.inputValue = $scope.inputValue /deNominator;
    }
    else if(!isNaN($scope.inputValue) && $scope.inputValue < 1000)
    {
       $scope.inputValue =  $scope.inputValue;
    }
    else
    {
      alert("Please enter a valid number value");
      $scope.inputValue = "";
    }
  }

Plunker供参考:http://plnkr.co/edit/tpl:8rFfZljYNl3z1A4LKSL2?p=preview