の2つの小数点以下の桁がの正の浮動小数点(change()
関数によって削除する必要があります)を受け入れる2つの入力があります。コントロールで2つの入力間を自動変更する
入力の値を変更すると、他の入力の値も自動的に変更されます。
問題#1から主な問題
私の正規表現は2つの小数を超えてブロックし、severalsに.
を許可していません(例:12.345.67は悲しいことに動作します)。
問題#2
禁断の文字が正しくchange()
の呼び出しで削除されません。私はreplace()
は文字列のみで動作しますので、これが発生し
Error: $scope.uc.replace is not a function
取得し、数学演算子(+
、-
、*
、/
)が数字のみで動作します。私は両方を使用する必要があります、どのように対処するには?
これは私のコードです。自分で試してみたい場合はthis JSFiddleを使用してください。 問題#1については
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.coeff = 0.5;
$scope.uf = '25';
$scope.uc = '';
$scope.change = function(type) {
console.log(type, "changes!");
$scope.uf = $scope.uf.replace(',', '.');
$scope.uf = $scope.uf.replace(/[^\d.-]/g, '');
$scope.uc = $scope.uc.replace(',', '.');
$scope.uc = $scope.uc.replace(/[^\d.-]/g, '');
if(type == 'uf') {
$scope.uc = $scope.uf * $scope.coeff;
} else if(type == 'uc') {
$scope.uf = $scope.uc/$scope.coeff;
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
<input type="text" ng-model="uf" ng-change="change('uf')"/>
<input type="text" ng-model="uc" ng-change="change('uc')"/>
</div>
'TYPE = "数"'数字以外の文字を入力するために禁止していません。ここで私は非フロートを入力するユーザーを防ぐためにしたい... :) – Mistalis