Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Autocomplete (Menu): Only traverse through .ui-menu-item elements for…

… paging. Fixes #6029 - Autocomplete: Custom item can be activated (and result in error) on PageUp/PageDown key click.
  • Loading branch information...
commit dda7bcb6383ed0fee9dcd1ae5f0a6e1dcc160c6b 1 parent 0ccc786
Scott González scottgonzalez authored
Showing with 10 additions and 8 deletions.
  1. +10 −8 ui/jquery.ui.autocomplete.js
18 ui/jquery.ui.autocomplete.js
View
@@ -501,12 +501,12 @@ $.widget("ui.menu", {
if (this.hasScroll()) {
// TODO merge with no-scroll-else
if (!this.active || this.last()) {
- this.activate(event, this.element.children(":first"));
+ this.activate(event, this.element.children(".ui-menu-item:first"));
return;
}
var base = this.active.offset().top,
height = this.element.height(),
- result = this.element.children("li").filter(function() {
+ result = this.element.children(".ui-menu-item").filter(function() {
var close = $(this).offset().top - base - height + $(this).height();
// TODO improve approximation
return close < 10 && close > -10;
@@ -514,11 +514,12 @@ $.widget("ui.menu", {
// TODO try to catch this earlier when scrollTop indicates the last page anyway
if (!result.length) {
- result = this.element.children(":last");
+ result = this.element.children(".ui-menu-item:last");
}
this.activate(event, result);
} else {
- this.activate(event, this.element.children(!this.active || this.last() ? ":first" : ":last"));
+ this.activate(event, this.element.children(".ui-menu-item")
+ .filter(!this.active || this.last() ? ":first" : ":last"));
}
},
@@ -527,13 +528,13 @@ $.widget("ui.menu", {
if (this.hasScroll()) {
// TODO merge with no-scroll-else
if (!this.active || this.first()) {
- this.activate(event, this.element.children(":last"));
+ this.activate(event, this.element.children(".ui-menu-item:last"));
return;
}
var base = this.active.offset().top,
height = this.element.height();
- result = this.element.children("li").filter(function() {
+ result = this.element.children(".ui-menu-item").filter(function() {
var close = $(this).offset().top - base + height - $(this).height();
// TODO improve approximation
return close < 10 && close > -10;
@@ -541,11 +542,12 @@ $.widget("ui.menu", {
// TODO try to catch this earlier when scrollTop indicates the last page anyway
if (!result.length) {
- result = this.element.children(":first");
+ result = this.element.children(".ui-menu-item:first");
}
this.activate(event, result);
} else {
- this.activate(event, this.element.children(!this.active || this.first() ? ":last" : ":first"));
+ this.activate(event, this.element.children(".ui-menu-item")
+ .filter(!this.active || this.first() ? ":last" : ":first"));
}
},
Please sign in to comment.
Something went wrong with that request. Please try again.