diff options
-rw-r--r-- | tests/unit/slider/slider_core.js | 46 | ||||
-rw-r--r-- | ui/jquery.ui.slider.js | 12 |
2 files changed, 58 insertions, 0 deletions
diff --git a/tests/unit/slider/slider_core.js b/tests/unit/slider/slider_core.js index 0aadc913d..38d4f4669 100644 --- a/tests/unit/slider/slider_core.js +++ b/tests/unit/slider/slider_core.js @@ -83,6 +83,52 @@ test("keydown END on handle sets value to max", function() { el.slider('destroy'); }); +test("keydown PAGE_UP on handle increases value by 1/5 range, not greater than max", function() { + $.each(['horizontal', 'vertical'], function(i, orientation) { + el = $('<div></div>'); + options = { + max: 100, + min: 0, + orientation: orientation, + step: 1 + }; + el.slider(options); + + el.slider("value", 70); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_UP }); + equals(el.slider("value"), 90); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_UP }); + equals(el.slider("value"), 100); + + el.slider("destroy"); + }); +}); + +test("keydown PAGE_DOWN on handle decreases value by 1/5 range, not less than min", function() { + $.each(['horizontal', 'vertical'], function(i, orientation) { + el = $('<div></div>'); + options = { + max: 100, + min: 0, + orientation: orientation, + step: 1 + }; + el.slider(options); + + el.slider("value", 30); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_DOWN }); + equals(el.slider("value"), 10); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_DOWN }); + equals(el.slider("value"), 0); + + el.slider("destroy"); + }); +}); + test("keydown UP on handle increases value by step, not greater than max", function() { el = $('<div></div>'); options = { diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js index 105a08ff9..2c96bd018 100644 --- a/ui/jquery.ui.slider.js +++ b/ui/jquery.ui.slider.js @@ -13,6 +13,10 @@ (function($) { +// number of pages in a slider +// (how many times can you page up/down to go through the whole range) +var numPages = 5; + $.widget("ui.slider", $.extend({}, $.ui.mouse, { _init: function() { @@ -119,6 +123,8 @@ $.widget("ui.slider", $.extend({}, $.ui.mouse, { switch (event.keyCode) { case $.ui.keyCode.HOME: case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: @@ -146,6 +152,12 @@ $.widget("ui.slider", $.extend({}, $.ui.mouse, { case $.ui.keyCode.END: newVal = self._valueMax(); break; + case $.ui.keyCode.PAGE_UP: + newVal = curVal + ((self._valueMax() - self._valueMin()) / numPages); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = curVal - ((self._valueMax() - self._valueMin()) / numPages); + break; case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: if(curVal == self._valueMax()) return; |