Ich habe 2 Eingänge, die nur akzeptiert positive Schwimmer mit 2 Dezimalstellen (andere Zeichen sollten durch change()
Funktion entfernt werden).Auto-Wechsel zwischen 2 Eingänge mit Steuerungen
Wenn der Wert eines Eingangs geändert wird, wird auch der Wert des anderen Eingangs automatisch geändert.
Ausgabe # 1-Hauptproblem
Meine regex über 2 Dezimalstellen nicht blockiert und severals .
(zB: 12.345.67 leider funktioniert) ermöglichen.
Issue # 2
Verbotene Zeichen sind auf dem Ruf von change()
nicht ordnungsgemäß entfernt. Ich bekomme
Error: $scope.uc.replace is not a function
Dies geschieht, weil replace()
nur auf Strings arbeitet, und mathematischen Operatoren (+
, -
, *
, /
) funktioniert nur auf Zahlen. Ich muss beide verwenden, wie ich damit umgehen soll?
Hier ist mein Code, können Sie this JSFiddle verwenden, wenn Sie es selbst versuchen.
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 = "number"' FORBID nicht nicht-numerischen Zeichen einzugeben. Hier möchte ich verhindern, dass Benutzer nicht-float eingeben ... :) – Mistalis