diff options
author | jzaefferer <joern.zaefferer@gmail.com> | 2010-04-30 13:04:09 +0200 |
---|---|---|
committer | jzaefferer <joern.zaefferer@gmail.com> | 2010-04-30 13:04:09 +0200 |
commit | abfdb2a8b6f93607c0791ba91ab616aed6b04772 (patch) | |
tree | b98aabd49f7981c673c343042a44f302909fdf9c /ui | |
parent | c7edd586d4ffc381690270130dd53e3a8007d613 (diff) | |
download | jquery-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.js | 2 | ||||
-rw-r--r-- | ui/jquery.ui.menu.js | 33 |
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() { |