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