Javascript 输入字段在控制器端以不同方式保存(angularjs)
这是你的电话号码。 当用户在输入中输入时,逗号会被动态添加。这就是使用指令的目的。它还显示小数点后2位 我的问题是- 例如,如果我在输入字段中键入“2300.34”并单击“提交”,它将在控制器端给我一个230034字符串。我已经使用console.log检查了我在控制器端获得的数据。我希望数据与控制器上的数据保持一致。我怎样才能做到这一点 JS和指令Javascript 输入字段在控制器端以不同方式保存(angularjs),javascript,angularjs,string,validation,directive,Javascript,Angularjs,String,Validation,Directive,这是你的电话号码。 当用户在输入中输入时,逗号会被动态添加。这就是使用指令的目的。它还显示小数点后2位 我的问题是- 例如,如果我在输入字段中键入“2300.34”并单击“提交”,它将在控制器端给我一个230034字符串。我已经使用console.log检查了我在控制器端获得的数据。我希望数据与控制器上的数据保持一致。我怎样才能做到这一点 JS和指令 var app = angular.module('App',[]); app.controller('MainCtrl', function (
var app = angular.module('App',[]);
app.controller('MainCtrl', function ($scope) {
$scope.getdata = function(){
console.log($scope.amount);
}
});
app.directive('format', ['$filter', function ($filter) {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function (a) {
return $filter(attrs.format)(ctrl.$modelValue);
});
ctrl.$parsers.unshift(function (viewValue) {
var plainNumber = viewValue.replace(/[^\d|\-+]/g, '');
elem.val($filter('number')(plainNumber/100,2));
return plainNumber;
});
}
};
}]);
HTML部分
<body ng-app="App">
<div ng-controller="MainCtrl">
<input type="text" ng-model="amount" format="number" />
<input type="submit" ng-click="getdata()" />
</div>
只需在
$parser中使用JavaScript内置的parseFloat
和toFixed
方法即可。unshift
函数:
var plainNumber = parseFloat(viewValue.replace(/[^\d|\-+]/g, '')).toFixed(2);
而且
return plainNumber/100.00
如果我使用您的产品线,2300.34现在保存为230034.00code@Ayesha更新了答案