jQuery UI自动完成-箭头不在结果列表上切换

jQuery UI自动完成-箭头不在结果列表上切换,jquery,jquery-ui,Jquery,Jquery Ui,我有一个自动完成功能,它几乎能按我所希望的那样工作。我遇到的问题是,一旦我开始搜索我的项目并得到一些建议,我就想用我的箭头点击不同的建议。它在输入字段中切换不同的建议,但不会移动到列表并在其中切换 这是我的密码 function () { $("#geosearch").autocomplete({ minLength: 2, source: cities, focus: function (event, ui) {

我有一个自动完成功能,它几乎能按我所希望的那样工作。我遇到的问题是,一旦我开始搜索我的项目并得到一些建议,我就想用我的箭头点击不同的建议。它在输入字段中切换不同的建议,但不会移动到列表并在其中切换

这是我的密码

function () {
    $("#geosearch").autocomplete({
        minLength: 2,
        source: cities,
        focus: function (event, ui) {
            this.value = ui.item.label;
            event.preventDefault(); // Prevent the default focus behavior.
        },
        select: function( event, ui ) {
            addLocation(ui.item);
            return false;
        }

    });          
}

我需要添加什么才能使其正常工作?有趣的是,我找到的所有示例都有一个有效的箭头浏览,但我的示例就是不这样做:

如果通过箭头浏览,您指的是使用键盘的箭头键浏览建议列表,那么我认为您的聚焦方法就是执行操作的方法


添加event.preventDefault有什么特殊原因吗;在焦点事件中?它可能会取消正确引发的焦点事件,并通知jqueryui将所选项目上的突出显示移动到下一个/上一个项目。

如果通过箭头浏览,您指的是使用键盘的箭头键浏览建议列表,那么我认为你的聚焦方法就是行动发生的方法


添加event.preventDefault有什么特殊原因吗;在焦点事件中?它可能会取消正确引发的焦点事件,并通知jqueryui将所选项目上的突出显示移动到下一个/上一个项目。

列表的autosuggestion css类为

.ui-corner-all
当它高亮显示时,它会变为

.ui-state-focus
如果你为它写一个风格,那么这个问题就会得到解决。例如:

.ui-state-focus {
 background:#F00; 
}

列表的autosuggestion css类为

.ui-corner-all
当它高亮显示时,它会变为

.ui-state-focus
如果你为它写一个风格,那么这个问题就会得到解决。例如:

.ui-state-focus {
 background:#F00; 
}

如果我去掉event.preventDefault,那么这些键将在value和label之间切换,这将产生一个糟糕的结果:是的,我将遍历建议列表。有时我的英语还不够:所以你有一个城市列表,当你使用箭头键遍历时,你希望当前关注的城市显示在geosearch输入字段上,对吗?假设geosearch是一个文本框。这种行为在没有太多定制的情况下应该已经可以正常工作了。我正在试用你的代码,它似乎可以正常工作。thanx snasirca。不过我有一个很大的问题,那就是这是一个用于EPiServer a cms的插件,可能还有其他一些javascript可能会干扰。因为正如你所说,这应该是现成的,但事实并非如此。所以我猜是有什么东西挡住了它。它也是episerver的一个旧版本,所以它只在IE上工作。它只是在FF和Chrome上崩溃,所以除了在IE上,我无法真正调试好。如果我去掉event.preventDefault,那么键将在value和label之间切换,这会产生一个糟糕的结果:是的,我会遍历建议列表。有时我的英语还不够:所以你有一个城市列表,当你使用箭头键遍历时,你希望当前关注的城市显示在geosearch输入字段上,对吗?假设geosearch是一个文本框。这种行为在没有太多定制的情况下应该已经可以正常工作了。我正在试用你的代码,它似乎可以正常工作。thanx snasirca。不过我有一个很大的问题,那就是这是一个用于EPiServer a cms的插件,可能还有其他一些javascript可能会干扰。因为正如你所说,这应该是现成的,但事实并非如此。所以我猜是有什么东西挡住了它。它也是一个旧版本的episerver,所以它只在IE上工作。它只是在FF和Chrome上崩溃了,所以除了在IE上,我真的无法调试好。你能举个例子说明这个问题吗?它在JSFIDLE上工作得很好。问题是EPiServer和它所有的蹩脚JS都阻止了它的工作:你能举个例子来说明这个问题吗?它在JSFIDLE上工作得很好。问题是EPiServer及其所有糟糕的JS阻止了它的工作: