From 1d735d23781f5553087daaa2e6f006e18daa376e Mon Sep 17 00:00:00 2001 From: gongdo Date: Wed, 5 Feb 2014 18:09:42 +0900 Subject: [PATCH] Added increament/decreament steps. When bfhnumbers need to increase or decrease the value, it uses options.steps instead of 1. Default value of options.steps is 1, obviously. Modified getValue function, to use jQuery.isNumeric() which is perfect to check numeric value. Also added some unit tests for this as well. --- js/bootstrap-formhelpers-number.js | 21 ++++----- js/tests/unit/bootstrap-formhelpers-number.js | 43 +++++++++++++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/js/bootstrap-formhelpers-number.js b/js/bootstrap-formhelpers-number.js index 1aa5c6a..f983dad 100644 --- a/js/bootstrap-formhelpers-number.js +++ b/js/bootstrap-formhelpers-number.js @@ -166,7 +166,7 @@ value = this.getValue(); - value = value + 1; + value = value + this.options.steps; this.$element.val(value).change(); }, @@ -176,7 +176,7 @@ value = this.getValue(); - value = value - 1; + value = value - this.options.steps; this.$element.val(value).change(); }, @@ -185,14 +185,14 @@ var value; value = this.$element.val(); - if (value !== '-1') { - value = String(value).replace(/\D/g, ''); - } - if (String(value).length === 0) { + + if ($.isNumeric(value)) { + value = parseInt(value); + } else { value = this.options.min; - } - - return parseInt(value); + }; + + return value; }, formatNumber: function() { @@ -266,7 +266,8 @@ zeros: false, keyboard: true, buttons: true, - wrap: false + wrap: false, + steps: 1, }; diff --git a/js/tests/unit/bootstrap-formhelpers-number.js b/js/tests/unit/bootstrap-formhelpers-number.js index 0a722b5..94c3d3a 100644 --- a/js/tests/unit/bootstrap-formhelpers-number.js +++ b/js/tests/unit/bootstrap-formhelpers-number.js @@ -233,5 +233,48 @@ $(function () { number.remove(); }); + + test('should increment value with steps on click increment button', function() { + var numberHTML = '', + number = $(numberHTML).appendTo('#qunit-fixture').bfhnumber({steps: 5}); + + number.parent().find('.inc').mousedown().mouseup(); + + ok(number.val() === '10', 'value is 10'); + + number.remove(); + }); + + test('should decrement value with steps on click decrement button', function() { + var numberHTML = '', + number = $(numberHTML).appendTo('#qunit-fixture').bfhnumber({steps: 2}); + + number.parent().find('.dec').mousedown().mouseup(); + + ok(number.val() === '3', 'value is 3'); + + number.remove(); + }); + + test('should not increment value over the max', function() { + var numberHTML = '', + number = $(numberHTML).appendTo('#qunit-fixture').bfhnumber({max: 5, steps: 3}); + + number.parent().find('.inc').mousedown().mouseup(); + + ok(number.val() === '5', 'value is 5'); + + number.remove(); + }); + + test('should not decrement value under the min', function() { + var numberHTML = '', + number = $(numberHTML).appendTo('#qunit-fixture').bfhnumber({steps: 3}); + + number.parent().find('.dec').mousedown().mouseup(); + ok(number.val() === '0', 'value is 0'); + + number.remove(); + }); }); \ No newline at end of file