aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unit/slider/slider_core.js46
-rw-r--r--ui/jquery.ui.slider.js12
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;