From 2201190d97993ec4b29b8fb31100f038e8c8fd9a Mon Sep 17 00:00:00 2001 From: Franklin Javier Date: Thu, 11 Oct 2018 11:40:45 -0300 Subject: [PATCH] fix: money mask (#2) * fix: toFixed(2) before apply money mask * add: test * fix: identation * add: more tests --- src/jquery.maskx.js | 11 ++++++++--- test/test.js | 23 ++++++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/jquery.maskx.js b/src/jquery.maskx.js index 0f2fa73..d0a59e4 100644 --- a/src/jquery.maskx.js +++ b/src/jquery.maskx.js @@ -94,9 +94,13 @@ return v; }; plugin.money = function (v, input) { - if (!input && /^\d+$/.test(v)) { - v = parseInt(v, 10) * 100; - } + if (!/number|string/.test(typeof v)) return '' + + if (!input) { + v = parseFloat(v).toFixed(2) + } + + v = String(v || ''); v = v.replace(/(\d)\.(\d{1}$)/, "$1.$20"); v = v.replace(/\D/g, ""); @@ -104,6 +108,7 @@ v = v.replace(/(\d)(\d{5})$/, "$1.$2"); v = v.replace(/(\d)(\d{2})$/, "$1,$2"); return v; + }; plugin.phone = function (v) { v = String(v || ''); diff --git a/test/test.js b/test/test.js index 3863c7b..e8efff7 100644 --- a/test/test.js +++ b/test/test.js @@ -59,15 +59,36 @@ expect(maskx.money('123456789', 'input')).toEqual('1.234.567,89'); expect(maskx.money(1234789123, 'input')).toEqual('12.347.891,23'); }); + it("should be equal direct template", function() { expect(maskx.money(1234)).toEqual('1.234,00'); expect(maskx.money(1234.1)).toEqual('1.234,10'); expect(maskx.money(1234.98)).toEqual('1.234,98'); + expect(maskx.money(101010)).toEqual('101.010,00'); + expect(maskx.money(100)).toEqual('100,00'); + expect(maskx.money(100.1)).toEqual('100,10'); + expect(maskx.money(100.19)).toEqual('100,19'); + expect(maskx.money(200.191)).toEqual('200,19'); + expect(maskx.money(200.1919)).toEqual('200,19'); + expect(maskx.money(96.00358749)).toEqual('96,00'); + expect(maskx.money(1.1)).toEqual('1,10'); + expect(maskx.money(1.127)).toEqual('1,13'); + expect(maskx.money('1.127')).toEqual('1,13'); + expect(maskx.money('200.1919')).toEqual('200,19'); + expect(maskx.money('200.999')).toEqual('201,00'); expect(maskx.money('1234')).toEqual('1.234,00'); expect(maskx.money('12345')).toEqual('12.345,00'); expect(maskx.money('1234')).toEqual('1.234,00'); expect(maskx.money('1234.1')).toEqual('1.234,10'); expect(maskx.money('1234789123')).toEqual('1234.789.123,00'); + expect(maskx.money(1)).toEqual('1,00'); + expect(maskx.money(0)).toEqual('0,00'); + expect(maskx.money({})).toEqual(''); + expect(maskx.money([{}])).toEqual(''); + expect(maskx.money()).toEqual(''); + expect(maskx.money(undefined)).toEqual(''); + expect(maskx.money(null)).toEqual(''); + expect(maskx.money(NaN)).toEqual(''); }); }); @@ -94,4 +115,4 @@ expect(maskx.time('122745')).toEqual('1:22.745'); }); }); -}); \ No newline at end of file +});