/* var currenyFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), { style: 'currency', currency: I18nNumberFormatter_currency, }); var numberFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), { style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2 }); class I18nNumberFormatter { static currencyFormatter(number) { return currenyFormatter.format(number); }; static numberFormatter(number) { return numberFormatter.format(number); }; static serverNumberFormatter(number) { // number = number+""; // number = number.replace(',', ''); // number = number.replace('.', ''); // number = parseFloat(parseInt(number))/100.0; // return number; var thousandSeparator = (1111).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); var decimalSeparator = (1.1).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); // var result = number + ""; // result = result.replace(new RegExp('\\' + thousandSeparator, 'g'), ''); number = number + ""; var result = parseFloat(number .replace(new RegExp('\\' + thousandSeparator, 'g'), '') .replace(new RegExp('\\' + decimalSeparator), '.') ); return result; }; }; $(document).ready(function() { (function ($) { var old_val = $.fn.val; $.fn.val = function(value){ if (this.hasClass('number-input')) { if (value===undefined) { if (typeof this.data('original-number') == 'undefined' && this.get(0) !== null) { $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.get(0).value)); } return $(this).data('original-number') + ''; return I18nNumberFormatter.serverNumberFormatter(old_val.apply(this, arguments)); //do something to get the values return old_val.apply(this, arguments); } //setter else { //do something with the value $(this).data('original-number', arguments[0] + ''); arguments[0] = I18nNumberFormatter.numberFormatter(arguments[0]) + ''; return old_val.apply(this, arguments); arguments[0] = I18nNumberFormatter.numberFormatter(I18nNumberFormatter.serverNumberFormatter(arguments[0])); return old_val.apply(this, arguments); } } return old_val.apply(this, arguments); }; })(jQuery); $(document).on('change', '.number-input', function() { $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.value)); }); $('.number-input').each(function() { $(this).data('original-number', this.value); $(this).val(this.value); // $(this).val(I18nNumberFormatter.numberFormatter(this.value)); // $(this).val($(this).val()); var form = $(this).closest('form'); if (typeof form != 'undefined') { form.append(''); } }); $('form').submit(function(){ // var thousandSeparator = (1111).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); // var decimalSeparator = (1.1).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); $('form').find('.number-input').each(function() { var value = $(this).val(); // value = parseFloat(value // .replace(new RegExp('\\' + thousandSeparator, 'g'), '') // .replace(new RegExp('\\' + decimalSeparator), '.') // ); this.value = value; }); }); }); */ 'use strict'; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var currenyFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), { style: 'currency', currency: I18nNumberFormatter_currency }); var _numberFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), { style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2 }); var I18nNumberFormatter = function () { function I18nNumberFormatter() { _classCallCheck(this, I18nNumberFormatter); } _createClass(I18nNumberFormatter, null, [{ key: 'currencyFormatter', value: function currencyFormatter(number) { return currenyFormatter.format(number); } }, { key: 'numberFormatter', value: function numberFormatter(number) { return _numberFormatter.format(number); } }, { key: 'serverNumberFormatter', value: function serverNumberFormatter(number) { // number = number+""; // number = number.replace(',', ''); // number = number.replace('.', ''); // number = parseFloat(parseInt(number))/100.0; // return number; var thousandSeparator = 1111 .toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); var decimalSeparator = 1.1.toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); // var result = number + ""; // result = result.replace(new RegExp('\\' + thousandSeparator, 'g'), ''); number = number + ""; var result = parseFloat(number.replace(new RegExp('\\' + thousandSeparator, 'g'), '').replace(new RegExp('\\' + decimalSeparator), '.')); return result; } }, { // [ACS-38576] The set up the page load gives every .number-input field, as one method so a // page can give it to fields it loads later. A field this has not seen has no stored raw // figure, so the val() getter below parses its value as a LOCALE formatted number. The // server prints these fields as a plain dot decimal, so on a locale that groups thousands // with a full stop (de_DE) "12.35" is read as 1235. The field also gets no _numberFormatter[] // entry, so the server does not clean it either. The edit order page reloads its whole totals // area on a product change, and calls this for the fields that reload adds. // // root: a jQuery object, element or selector to search. Fields already set up are skipped, // and a form never gets a second _numberFormatter[] entry for the same name. key: 'initNumberInputs', value: function initNumberInputs(root) { $(root).find('.number-input').each(function () { if (typeof $(this).data('original-number') != 'undefined') { return; } $(this).data('original-number', this.value); $(this).val(this.value); var form = $(this).closest('form'); if (form.length > 0 && form.find('input._numberFormatter[value="' + $(this).attr('name') + '"]').length === 0) { form.append(''); } }); } }]); return I18nNumberFormatter; }(); $(document).ready(function () { (function ($) { var old_val = $.fn.val; $.fn.val = function (value) { if (this.hasClass('number-input')) { if (value === undefined) { if (typeof this.data('original-number') == 'undefined' && this.get(0) !== null) { $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.get(0).value)); } return $(this).data('original-number') + ''; // return I18nNumberFormatter.serverNumberFormatter(old_val.apply(this, arguments)); // //do something to get the values // return old_val.apply(this, arguments); } //setter else { //do something with the value $(this).data('original-number', arguments[0] + ''); if (!isNaN(arguments[0])) { arguments[0] = I18nNumberFormatter.numberFormatter(arguments[0]) + ''; } return old_val.apply(this, arguments); // arguments[0] = I18nNumberFormatter.numberFormatter(I18nNumberFormatter.serverNumberFormatter(arguments[0])); // return old_val.apply(this, arguments); } } return old_val.apply(this, arguments); }; })(jQuery); $(document).on('change', '.number-input', function () { $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.value)); }); $('.number-input').each(function () { $(this).data('original-number', this.value); $(this).val(this.value); // $(this).val(I18nNumberFormatter.numberFormatter(this.value)); // $(this).val($(this).val()); var form = $(this).closest('form'); if (typeof form != 'undefined') { form.append(''); } }); $('form').submit(function () { // var thousandSeparator = (1111).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); // var decimalSeparator = (1.1).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, ''); $('form').find('.number-input').each(function () { var value = $(this).val(); // value = parseFloat(value // .replace(new RegExp('\\' + thousandSeparator, 'g'), '') // .replace(new RegExp('\\' + decimalSeparator), '.') // ); this.value = value; }); }); });