JqueryUI 自动完成项目焦点无法使用箭头键工作
JqueryUI Autocomplete item focus does not work using arrow keys
在我的 jQuery 自动完成小部件中,出于某种原因,列表项是使用鼠标正确选择的,鼠标悬停事件也适用于应用 CSS 并适当地更改项目背景。但是当使用箭头键导航自动完成列表时,该项目未获得焦点。它确实执行默认操作并使用项目的值填充输入框(我已经阻止了此默认操作以便不填充输入框)但该项目未获得焦点(参见屏幕截图)。
CSS:
.ui-menu-item:hover{
cursor: pointer;
background: #D6DFF2;
}
Javascript:
$.widget("ui.autocomplete", $.ui.autocomplete, {
options: {
maxItems: 2
},
_renderMenu: function (ul, items) {
var that = this,
count = 0;
$.each(items, function (index, item) {
if (count < that.options.maxItems) {
that._renderItemData(ul, item);
}
count++;
});
}
});
var initializeAutoComplete = function () {
$('#example-links').autocomplete({
source: $('#hidden-action-autoComplete').val(),
maxItems: 10,
delay: 750,
minLength :1,
select: function (event, ui) {
event.preventDefault();
$(this).val(ui.item.label);
window.location = '/path/to/be/shown/' + ui.item.value;
},
focus: function (event, ui) {
event.preventDefault();
$('.ui-autocomplete > li').attr('title', ui.item.label + '(' + ui.item.value + ')');
}
});
}
在截图中,我按了3次下箭头键,目前第三项应该是焦点,但没有。
默认情况下,自动完成使用以下 CSS 来突出显示活动元素:
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
border: 1px solid #999999;
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
font-weight: normal;
color: #212121;
}
尝试将所有这些 类 添加到您自己的 CSS。
在你的情况下:
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
cursor: pointer;
background: #D6DFF2;
}
在较新的版本中,CSS 类 已更改。如果上述方法不起作用,请尝试使用以下 CSS 选择器:
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover
感谢Jack Miller指出这一点
在我的 jQuery 自动完成小部件中,出于某种原因,列表项是使用鼠标正确选择的,鼠标悬停事件也适用于应用 CSS 并适当地更改项目背景。但是当使用箭头键导航自动完成列表时,该项目未获得焦点。它确实执行默认操作并使用项目的值填充输入框(我已经阻止了此默认操作以便不填充输入框)但该项目未获得焦点(参见屏幕截图)。
CSS:
.ui-menu-item:hover{
cursor: pointer;
background: #D6DFF2;
}
Javascript:
$.widget("ui.autocomplete", $.ui.autocomplete, {
options: {
maxItems: 2
},
_renderMenu: function (ul, items) {
var that = this,
count = 0;
$.each(items, function (index, item) {
if (count < that.options.maxItems) {
that._renderItemData(ul, item);
}
count++;
});
}
});
var initializeAutoComplete = function () {
$('#example-links').autocomplete({
source: $('#hidden-action-autoComplete').val(),
maxItems: 10,
delay: 750,
minLength :1,
select: function (event, ui) {
event.preventDefault();
$(this).val(ui.item.label);
window.location = '/path/to/be/shown/' + ui.item.value;
},
focus: function (event, ui) {
event.preventDefault();
$('.ui-autocomplete > li').attr('title', ui.item.label + '(' + ui.item.value + ')');
}
});
}
在截图中,我按了3次下箭头键,目前第三项应该是焦点,但没有。
默认情况下,自动完成使用以下 CSS 来突出显示活动元素:
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
border: 1px solid #999999;
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
font-weight: normal;
color: #212121;
}
尝试将所有这些 类 添加到您自己的 CSS。 在你的情况下:
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
cursor: pointer;
background: #D6DFF2;
}
在较新的版本中,CSS 类 已更改。如果上述方法不起作用,请尝试使用以下 CSS 选择器:
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover
感谢Jack Miller指出这一点