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

问题描述:

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

+1

开始通过查看指令。 https://docs.angularjs.org/guide/directive然后发布你尝试过的东西。 –

试试下面这将有助于:

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

您将有一个按键运行或监视绑定值的函数。 检查如果字符串是一个号码,然后使用该字符串的长度toFixed减去3,这样的事情(未测试):

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

你可以在输入框的blur事件上使用一个简单的函数来实现这一点。

$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