aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorjzaefferer <joern.zaefferer@gmail.com>2010-04-30 13:04:09 +0200
committerjzaefferer <joern.zaefferer@gmail.com>2010-04-30 13:04:09 +0200
commitabfdb2a8b6f93607c0791ba91ab616aed6b04772 (patch)
treeb98aabd49f7981c673c343042a44f302909fdf9c /ui
parentc7edd586d4ffc381690270130dd53e3a8007d613 (diff)
downloadjquery-ui-abfdb2a8b6f93607c0791ba91ab616aed6b04772.tar.gz
jquery-ui-abfdb2a8b6f93607c0791ba91ab616aed6b04772.zip
First attempt at integrating key handling into menu
Diffstat (limited to 'ui')
-rw-r--r--ui/jquery.ui.autocomplete.js2
-rw-r--r--ui/jquery.ui.menu.js33
2 files changed, 35 insertions, 0 deletions
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index 62e99cff3..b4176c038 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -104,6 +104,8 @@ $.widget( "ui.autocomplete", {
.addClass( "ui-autocomplete" )
.appendTo( "body", doc )
.menu({
+ // custom key handling for now
+ input: $(),
focus: function( event, ui ) {
var item = ui.item.data( "item.autocomplete" );
if ( false !== self._trigger( "focus", null, { item: item } ) ) {
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js
index 3ea98677e..b8e1fd410 100644
--- a/ui/jquery.ui.menu.js
+++ b/ui/jquery.ui.menu.js
@@ -31,6 +31,39 @@ $.widget("ui.menu", {
self.select( event );
});
this.refresh();
+
+ if (!this.options.input) {
+ this.options.input = this.element.attr("tabindex", 0);
+ }
+ this.options.input.bind("keydown.menu", function(event) {
+ switch (event.keyCode) {
+ case $.ui.keyCode.PAGE_UP:
+ self.previousPage();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ break;
+ case $.ui.keyCode.PAGE_DOWN:
+ self.nextPage();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ break;
+ case $.ui.keyCode.UP:
+ self.previous();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ break;
+ case $.ui.keyCode.DOWN:
+ self.next();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ break;
+ case $.ui.keyCode.ENTER:
+ self.select();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ break;
+ }
+ });
},
destroy: function() {