-
Notifications
You must be signed in to change notification settings - Fork 1
/
jquery.html5-number.min.js
2 lines (2 loc) · 3.33 KB
/
jquery.html5-number.min.js
1
2
/* HTML5 Number Input Polyfill | Version 1.2 | http://wesleytodd.com/ | http://whitelion.com/ */
(function(a){a.html5Number=function(c,b){var d=this;d.$el=a(c);d.el=c;d.$el.data("html5Number",d);d.min=-9999999;d.max=9999999;d.step=1;d.init=function(){d.options=a.extend({},a.html5Number.defaultOptions,b);if(d.options.modernizr&&Modernizr.inputtypes.number){return false}d.$el.on("updatemethods.html5Number",function(){d.registerMethods()});d.$el.trigger("updatemethods.html5Number");if(typeof d.$el.attr("min")!="undefined"){d.min=parseInt(d.$el.attr("min"))}if(typeof d.$el.attr("max")!="undefined"){d.max=parseInt(d.$el.attr("max"))}if(typeof d.$el.attr("step")!="undefined"){d.step=parseInt(d.$el.attr("step"))}if(typeof d.options.plusButton=="function"){d.options.plusButton=d.options.plusButton.call(d)}if(typeof d.options.minusButton=="function"){d.options.minusButton=d.options.minusButton.call(d)}d.options.plusButton=d.options.plusButton.clone();d.options.minusButton=d.options.minusButton.clone();d.controls=a('<div class="html5Number-controls"></div>').append(d.options.plusButton).append(d.options.minusButton);d.controls.on({"click.html5Number":function(f){if(a(f.target).is(d.options.plusButton)){d.increment()}else{if(a(f.target).is(d.options.minusButton)){d.decrement()}}f.preventDefault()},"mousedown.html5Number":function(f){if(a(f.target).is(d.options.plusButton)){var g=d.increment}else{if(a(f.target).is(d.options.minusButton)){var g=d.decrement}}d.rateLimit(g,d.options.startInterval);f.preventDefault()}});a("html").on("mouseup",function(){if(typeof d.timeout!="undefined"){clearTimeout(d.timeout)}});d.$el.wrap('<div class="html5Number-wrap" />').after(d.controls)};d.rateLimit=function(f,e){d.timeout=setTimeout(function(){f.call(d);d.rateLimit(f,e/d.options.accelleration)},e)};d.registerMethods=function(){a.each(a.html5Number.publicMethods,function(f,e){if(!d[f]){d[f]=e}})};d.init()};a.html5Number.publicMethods={addMethod:function(b,c){a.html5Number.publicMethods[b]=c;this.$el.trigger("updatemethods.html5Number");return this.$el},increment:function(){v=parseInt(this.$el.val());if(isNaN(v)){v=this.options.defaultVal}nv=v+this.step;if(nv>this.max){nv=this.max;this.$el.trigger("maxReached")}this.$el.val(nv).change();return this.$el},decrement:function(){v=parseInt(this.$el.val());if(isNaN(v)){v=this.options.defaultVal}nv=v-this.step;if(nv<this.min){nv=this.min;this.$el.trigger("minReached")}this.$el.val(nv).change();return this.$el}};a.html5Number.defaultOptions={modernizr:(function(){if(typeof Modernizr!="undefined"){return true}else{return false}})(),plusButton:a('<a href="#" class="plus">+</a>'),minusButton:a('<a href="#" class="minus">-</a>'),defaultVal:0,startInterval:200,accelleration:1.1};a.fn.html5Number=function(b){if(typeof b==="string"&&a.html5Number.publicMethods[b]){return a.html5Number.publicMethods[b].apply(this.data("html5Number"),Array.prototype.slice.call(arguments,1))}else{if(typeof b==="object"||!b){return this.each(function(){(new a.html5Number(this,b))})}else{a.error("Method "+b+" does not exist.")}}};if(typeof a.html5NumberOptions!="undefined"&&typeof a.html5NumberOptions.$els!="undefined"){a.html5NumberOptions.$els.html5Number(a.html5NumberOptions)}else{if(typeof a.html5NumberOptions=="undefined"||(typeof a.html5NumberOptions=="undefined"&&a.html5NumberOptions.autoload!=false)){a("input[type=number]").html5Number()}}})(jQuery);