Điều này có thể không phải là câu trả lời mà bạn muốn, nhưng có lẽ nó giúp bạn một chút:
JsBin: http://jsbin.com/iyulaj/1/
Sử dụng chỉ thị, bạn có thể lấy dữ liệu của đầu vào, phân tích cú pháp và sau đó đặt nó vào biến số $scope
. Vui lòng xem: http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController ($parsers
và $formatters
. Tôi lấy nó từ: Using angularjs filter in input element).
Chỉ thị có thể tìm kiếm dấu phẩy và thay thế bằng dấu chấm. Nó có thể trông như thế này:
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
}
};
});
Các lĩnh vực đầu vào:
<input ng-model='value' type='text' numberinput='' />
Cũng lưu ý rằng các đầu vào hiện nay là một trường văn bản. Hãy xem điều này: http://jsbin.com/iyurol/1/
Dữ liệu nhập là trường số. Nhưng gõ 11,5
và nó sẽ xuất ùndefined
(lưu ý rằng tôi sống ở Đức và chúng tôi đang sử dụng dấu phẩy). Vì vậy, trình duyệt không 'phân tích cú pháp' số chính xác nếu nó không có ký hiệu chấm, ngay cả khi bạn sống ở các vùng có ký hiệu bằng dấu phẩy ...
Hãy sửa tôi, nếu có điều gì sai về điều đó;)
Tôi đang chạy vào cùng một vấn đề cho Đức tệ định dạng đầu vào. – Lucas