From e72980f1d41914354857e76672da36dacc931429 Mon Sep 17 00:00:00 2001 From: niuben <741001695@qq.com> Date: Wed, 13 Aug 2014 19:19:50 +0800 Subject: [PATCH] add mousedown input's value is changing when mousedown event trigger. input'value stop when mouseup event trigger. --- jquery.inputNumber.js | 74 ++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 26 deletions(-) diff --git a/jquery.inputNumber.js b/jquery.inputNumber.js index aba6a09..e000f91 100644 --- a/jquery.inputNumber.js +++ b/jquery.inputNumber.js @@ -16,6 +16,8 @@ $el: null, // input element $wrap: null, //div wrapper element + handle: null, //timer handle + options: null, defaults: { negative: true, @@ -45,34 +47,25 @@ self = this; this.$wrap - .delegate('a.'+opts.downClass,'click',function(e){ - var defVal = parseInt(self.$el.val()) || 0, - curVal = --defVal; - - console.log(curVal); - - if(!opts.negative) { - if(curVal >= 0) self.$el.val(curVal); - } else { - self.$el.val(curVal); - } - - e.preventDefault(); + .delegate('a.'+opts.downClass,'mousedown',function(e){ + self.reduce(e); + self.handle = setInterval(function(){ + self.reduce(e); + }, 200); }) - .delegate('a.'+opts.upClass,'click',function(e){ - var defVal = parseInt(self.$el.val()) || 0, - curVal = ++defVal; - - console.log(curVal); - - if(!opts.positive) { - if(curVal <= 0) self.$el.val(curVal); - } else { - self.$el.val(curVal); - } - - e.preventDefault(); + .delegate('a.'+opts.downClass,'mouseup',function(e){ + clearInterval(self.handle); + }) + .delegate('a.'+opts.upClass,'mousedown',function(e){ + self.add(e); + self.handle = setInterval(function(){ + self.add(e); + }, 200); + }) + .delegate('a.'+opts.upClass, 'mouseup', function(e){ + clearInterval(self.handle); }); + ; this.$el .on('change',function(e){ @@ -95,8 +88,37 @@ }); + }, + reduce: function(e){ + var opts = this.options; + var defVal = parseInt(this.$el.val()) || 0, + curVal = --defVal; + + if(!opts.negative) { + if(curVal >= 0) this.$el.val(curVal); + } else { + this.$el.val(curVal); + } + e.preventDefault(); + }, + add: function(e){ + var opts = this.options; + var defVal = parseInt(this.$el.val()) || 0, + curVal = ++defVal; + + console.log(curVal); + + if(!opts.positive) { + if(curVal <= 0) this.$el.val(curVal); + } else { + this.$el.val(curVal); + } + + e.preventDefault(); + } + }; $.fn.inputNumber = function(options) {