/** * jquery.spin-button * (c) 2008 Semooh (http://semooh.jp/) * * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * **/ (function($){ $.fn.extend({ spin: function(opt){ return this.each(function(){ opt = $.extend({ imageBasePath: '/img/spin/', spinBtnImage: 'spin-button.png', spinUpImage: 'spin-up.png', spinDownImage: 'spin-down.png', interval: 1, max: null, min: null, timeInterval: 500, timeBlink: 200, precision: 0, changeFn: null }, opt || {}); var txt = $(this); var spinBtnImage = opt.imageBasePath+opt.spinBtnImage; var btnSpin = new Image(); btnSpin.src = spinBtnImage; var spinUpImage = opt.imageBasePath+opt.spinUpImage; var btnSpinUp = new Image(); btnSpinUp.src = spinUpImage; var spinDownImage = opt.imageBasePath+opt.spinDownImage; var btnSpinDown = new Image(); btnSpinDown.src = spinDownImage; var btn = $(document.createElement('img')); btn.attr('src', spinBtnImage); btn.css({cursor: 'pointer', verticalAlign: 'bottom', padding: 0, margin: 0}); txt.after(btn); txt.css({marginRight:0, paddingRight:0}); function spin(vector){ var val = txt.val(); var vmin = null; var vmax = null; if( txt.attr('disabled') ) return; if( opt.min != null ); vmin = parseFloat(opt.min); if( opt.max != null ); vmax = parseFloat(opt.max); if(!isNaN(val)){ val = parseFloat(val) + (vector*opt.interval); if(vmin!=null && valvmax) val=vmax; if(val != txt.val()){ if( opt.precision > 0 ) { val = val.toFixed(opt.precision); } txt.val(val); txt.change(); src = (vector > 0 ? spinUpImage : spinDownImage); btn.attr('src', src); if(opt.timeBlink pos ? 1 : -1); (function(){ spin(vector); var tk = setTimeout(arguments.callee, opt.timeInterval); $(document).one('mouseup', function(){ clearTimeout(tk); btn.attr('src', spinBtnImage); }); })(); return false; }); }); } }); })(jQuery);