/* * numble - v1.1.0 * Simple jQuery number selector * https://github.com/jasonyost/numble#readme * * Made by * Under MIT License */ !function(a,b,c,d){"use strict";function e(b,c){this.element=b,this.settings=a.extend({},g,c),this._defaults=g,this._name=f,this.incrementable=function(){var b=parseInt(a(this.element).val()),c=this.canIncrement(b,this.settings);return this.debugMessage("incrementable called : "+c),c},this.decrementable=function(){var b=parseInt(a(this.element).val()),c=this.canDecrement(b,this.settings);return this.debugMessage("incrementable called : "+c.can),c.can},this.init()}var f="numble",g={debug:!1,includeButtons:!0,allowNegative:!0,maxValue:d,minValue:d,initialValue:d,allowScroll:!0,incrementText:"▲",decrementText:"▼",allowEdit:!0,hideButtonsOnMinMax:!1};a.extend(e.prototype,{init:function(){var a=this;a.debugMessage("numble initialized"),a.initDom(a.element,a.settings),a.bindElementChange(a.element,a.settings),a.bindNumbleScroll(a.element,a.settings),a.initValue(a.element,a.settings),a.addButtons(a.element,a.settings)},initDom:function(b,c){var d=this;a(b).wrap('
'),a(b).addClass("numble-original"),a(b).hide(),a(b).after('
")},bindElementChange:function(b){var c=this,d=c.getNumbleControl(b);a(b).change(function(){c.debugMessage("change detected: "+a(this).val()),d.text(a(this).val());var e=c.getIncrementButton(b),f=c.getDecrementButton(b);c.settings.includeButtons&&c.settings.hideButtonsOnMinMax&&(c.canIncrement(c.getCurrentValue(b),c.settings)?e.show():(console.log(),e.hide()),c.canDecrement(c.getCurrentValue(b),c.settings).can?f.show():f.hide())}),d.keydown(function(a){return String.fromCharCode(a.keyCode).match(/[^0-9]/g)&&8!==a.keyCode?!1:void 0}),d.blur(function(){return d.text()>c.settings.maxValue?(c.debugMessage("value set greater than maxValue, reverting"),void d.text(a(b).val())):d.text()0||d.originalEvent.detail<0?(c.debugMessage("received scroll up event"),c.incrementValue(a)):(c.debugMessage("received scroll down event"),c.decrementValue(a,b)),d.preventDefault()})},initValue:function(b,c){var d=this,e=this.getIntialValue(b,c);d.debugMessage("original value "+e),a(b).val(e),a(b).change()},getNumbleControl:function(b){return a(b).siblings(".numble-control").find(".numble-value")},addButtons:function(b,c){var d=this;if(c.includeButtons){var e=a(b).siblings(".numble-control"),f=d.getCurrentValue(b);e.append(''+c.incrementText+""),e.find(".numble-increment").click(function(){d.incrementValue(b)}),c.hideButtonsOnMinMax&&!d.canIncrement(f,c)&&(d.debugMessage("hideButtonsOnMinMax set, current value: "+f+", cannot increment, hiding button"),e.find(".numble-increment").hide()),e.append(''+c.decrementText+""),e.find(".numble-decrement").click(function(){d.decrementValue(b,c)}),c.hideButtonsOnMinMax&&!d.canDecrement(f,c).can&&(d.debugMessage("hideButtonsOnMinMax set, current value: "+f+", cannot decrement, hiding button"),e.find(".numble-decrement").hide())}},canIncrement:function(a,b){return b.maxValue&&a