diff --git a/bootstrap-number-input.js b/bootstrap-number-input.js index b1c7159..6fee528 100644 --- a/bootstrap-number-input.js +++ b/bootstrap-number-input.js @@ -27,6 +27,8 @@ var settings = $.extend({ upClass: 'default', downClass: 'default', + upText: '+', + downText: '-', center: true }, options ); @@ -36,45 +38,47 @@ var min = self.attr('min'); var max = self.attr('max'); + var step = parseInt(self.attr('step')) || 1; function setText(n) { - if((min && n < min) || (max && n > max)) { + if (isNaN(n) || (min && n < min) || (max && n > max)) { return false; } clone.focus().val(n); + clone.trigger('change'); return true; } var group = $("
"); - var down = $("").attr('class', 'btn btn-' + settings.downClass).click(function() { - setText(parseInt(clone.val()) - 1); + var down = $("").attr('class', 'btn btn-' + settings.downClass).click(function() { + setText(parseInt(clone.val() || clone.attr('value')) - step); }); - var up = $("").attr('class', 'btn btn-' + settings.upClass).click(function() { - setText(parseInt(clone.val()) + 1); + var up = $("").attr('class', 'btn btn-' + settings.upClass).click(function() { + setText(parseInt(clone.val() || clone.attr('value')) + step); }); $("").append(down).appendTo(group); clone.appendTo(group); - if(clone) { + if(clone && settings.center) { clone.css('text-align', 'center'); } $("").append(up).appendTo(group); // remove spins from original - clone.prop('type', 'text').keydown(function (e) { + clone.prop('type', 'text').keydown(function(e) { if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || - (e.keyCode == 65 && e.ctrlKey === true) || + (e.keyCode == 65 && e.ctrlKey === true) || (e.keyCode >= 35 && e.keyCode <= 39)) { return; } - if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { + if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { e.preventDefault(); } var c = String.fromCharCode(e.which); var n = parseInt(clone.val() + c); - if((min && n < min) || (max && n > max)) { + if ((min && n < min) || (max && n > max)) { e.preventDefault(); } }); @@ -83,4 +87,3 @@ }); }; } ( jQuery )); -