From 41245e6a7dae2e985104a72e5d9a5c2c64998329 Mon Sep 17 00:00:00 2001 From: Chi Cheng Date: Mon, 18 Aug 2008 11:37:19 +0000 Subject: Spinner: - handle quick click on div (shortor than 100ms) - handle dblclick --- ui/ui.spinner.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ui/ui.spinner.js b/ui/ui.spinner.js index 3d17e054d..4bcb9e843 100644 --- a/ui/ui.spinner.js +++ b/ui/ui.spinner.js @@ -35,13 +35,15 @@ $.widget("ui.spinner", { .prepend('
') .find("div.ui-spinner-up") .bind("mousedown", function() { if(!self.counter) self.counter = 1; self._mousedown(100, "_up"); }) - .bind("mouseup", function(e) { self.counter = 0; if(self.timer) window.clearInterval(self.timer); self.element[0].focus(); self._propagate("change", e); }) + .bind("mouseup", function(e) { if(self.counter == 1) self._up(); self.counter = 0; if(self.timer) window.clearInterval(self.timer); self.element[0].focus(); self._propagate("change", e); }) + .bind("dblclick", function(e) { self._up(); }) // mousedown/mouseup capture first click, now handle second click .css({ height: pickerHeight, top: parseInt(this.element.css("borderTopWidth"),10)+1, right: parseInt(this.element.css("borderRightWidth"),10)+1 }) .end() .append('
') .find("div.ui-spinner-down") .bind("mousedown", function() { if(!self.counter) self.counter = 1; self._mousedown(100, "_down"); }) - .bind("mouseup", function(e) { self.counter = 0; if(self.timer) window.clearInterval(self.timer); self.element[0].focus(); self._propagate("change", e); }) + .bind("mouseup", function(e) { if(self.counter == 1) self._down(); self.counter = 0; if(self.timer) window.clearInterval(self.timer); self.element[0].focus(); self._propagate("change", e); }) + .bind("dblclick", function(e) { self._down(); }) // mousedown/mouseup capture first click, now handle second click .css({ height: pickerHeight, bottom: parseInt(this.element.css("borderBottomWidth"),10)+1, right: parseInt(this.element.css("borderRightWidth"),10)+1 }) .end() ; @@ -71,19 +73,18 @@ $.widget("ui.spinner", { this.element[0].value = this.element[0].value.replace(/[^0-9\-]/g, ''); this._constrain(); }, - _down: function(e) { + _spin: function(d ,e) { if(isNaN(parseInt(this.element[0].value,10))) this.element[0].value = this.options.start; - this.element[0].value -= (this.options.incremental && this.counter > 100 ? (this.counter > 200 ? 100 : 10) : 1) * this.options.stepping; + this.element[0].value = parseFloat(this.element[0].value) + ( d == "up" ? 1 : -1 ) * (this.options.incremental && this.counter > 100 ? (this.counter > 200 ? 100 : 10) : 1) * this.options.stepping; this._constrain(); if(this.counter) this.counter++; this._propagate("spin", e); }, + _down: function(e) { + this._spin("down", e); + }, _up: function(e) { - if(isNaN(parseInt(this.element[0].value,10))) this.element[0].value = this.options.start; - this.element[0].value = parseFloat(this.element[0].value) + (this.options.incremental && this.counter > 100 ? (this.counter > 200 ? 100 : 10) : 1) * this.options.stepping; - this._constrain(); - if(this.counter) this.counter++; - this._propagate("spin", e); + this._spin("up", e); }, _mousedown: function(i, d) { var self = this; -- cgit v1.2.3