From f962af039aaab8101261c7675d81beb3e53d6b3c Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 8 Mar 2017 20:23:10 +0300 Subject: [PATCH] docs: fix values in float inputs --- project/static/js/formset-events.js | 48 +++++++++++++++++++++++++++-- project/templates/base.html | 2 +- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/project/static/js/formset-events.js b/project/static/js/formset-events.js index fd072be..c07f523 100644 --- a/project/static/js/formset-events.js +++ b/project/static/js/formset-events.js @@ -1,4 +1,10 @@ $(function() { + var fix_float_input = function (e) { + var el = $(this); + var new_val = fix_float_string(el.val()); + if (new_val != el.val()) + el.val(new_val); + } var calc_summa = function (e) { var $this = $(this); var qty = parseFloat($this.closest('tr.row').find('td.qty input').val()); @@ -22,6 +28,16 @@ $(function() { calc_itogo_nds(); } window.set_events = function set_events() { + $("#tbl_items tr.row td.qty input").on('keyup', fix_float_input); + $("#tbl_items tr.row td.price input").on('keyup', fix_float_input); + + $("#tbl_items tr.row td.debit input").on('keyup', fix_float_input); + $("#tbl_items tr.row td.credit input").on('keyup', fix_float_input); + + // not formset fields though... + $("div#saldo_debit input").on('keyup', fix_float_input); + $("div#saldo_credit input").on('keyup', fix_float_input); + $("#tbl_items tr.row td.qty input").on('keyup', calc_summa); $("#tbl_items tr.row td.price input").on('keyup', calc_summa); @@ -31,7 +47,7 @@ $(function() { //$('input[name=nds_type]').change(calc_itogo_nds); $('#id_nds_value').change(calc_itogo_nds); - + // //$("#tbl_items tr.row td.qty input").blur(calc_itogo_nds); //$("#tbl_items tr.row td.price input").blur(calc_itogo_nds); @@ -40,4 +56,32 @@ $(function() { window.set_events(); window.calc_itogo(); calc_itogo_nds(); -}) \ No newline at end of file +}) + + +function fix_float_string(val) { + try { + var part1, part2, lastpos; + + lastpos = val.lastIndexOf('.'); + if (lastpos != -1) { // string have at least one dot + part1 = val.substr(0, lastpos); + part2 = val.substr(lastpos+1); + val = part1.replace('.', '').replace(',', '') + '.' + part2.replace('.', '').replace(',', ''); + } + else { + lastpos = val.lastIndexOf(','); + if (lastpos != -1) { // string have at least one comma + part1 = val.substr(0, lastpos); + part2 = val.substr(lastpos+1); + val = part1.replace('.', '').replace(',', '') + '.' + part2.replace('.', '').replace(',', ''); + } + } + } + catch (e) { + if (!e instanceof TypeError) + throw(e); + } + + return val; +} diff --git a/project/templates/base.html b/project/templates/base.html index c403f9e..0e55986 100644 --- a/project/templates/base.html +++ b/project/templates/base.html @@ -152,7 +152,7 @@ - +