To nie może być odpowiedź chcesz, ale może to ci trochę pomaga:
JsBin: http://jsbin.com/iyulaj/1/
Za pomocą dyrektywy można pobrać dane wejściowe, przeanalizować je, a następnie umieścić w zmiennej $scope
. Proszę zobaczyć: http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController ($parsers
i $formatters
. Wziąłem go od: Using angularjs filter in input element).
Dyrektywa może szukać przecinka i zastąpić go kropką. To może wyglądać następująco:
angular.module('MyModule').directive('numberinput', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$parsers.push(function(data) {
//convert data from view format to model format
return data.replace(',', "."); //converted
});
ngModelController.$formatters.push(function(data) {
//convert data from model format to view format
return data.replace('.', ","); //converted
});
// http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController
}
};
});
Pole wejściowe:
<input ng-model='value' type='text' numberinput='' />
Należy również pamiętać, że wejście jest teraz pole tekstowe. Spójrz na to: http://jsbin.com/iyurol/1/
Dane wejściowe to pole liczbowe. Ale wpisz 11,5
, a wyświetli się ùndefined
(zauważ, że mieszkam w Niemczech i używamy przecinki). Przeglądarka nie "prawidłowo" analizuje numeru, jeśli nie jest zapisana kropką, nawet jeśli mieszkasz w regionach z przecinkami ...
Proszę, popraw mnie, jeśli coś jest nie w porządku;)
biegnę do tego samego problemu dla formatowania Niemcy waluty na wejściach. – Lucas