mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-10-05 01:44:18 +00:00
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.
This commit is contained in:
parent
0ccc78698b
commit
dda7bcb638
18
ui/jquery.ui.autocomplete.js
vendored
18
ui/jquery.ui.autocomplete.js
vendored
@ -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"));
|
||||
}
|
||||
},
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user