jQuery自动完成不选择项目

use*_*420 8 javascript jquery jquery-ui-autocomplete

在选项"source"中,我使用ajax获得结果+ 1个自定义注释文本以及可能的结果信息.喜欢:"显示3456个结果中的2个".它只是用户的信息.

对于-ul-列表中的最后一个条目,我不会处理以下事件:keyup,keydown,pageup和pagedown.

为此,我在选项"open"中设置了这个:

open: function(event, ui) {
$("ul.ui-autocomplete.ui-menu li:last").removeClass("ui-menu-item").removeAttr("role").html('Show 2 of 3456 results');
},
Run Code Online (Sandbox Code Playgroud)

HTML现在看起来像这样:

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; top: 39px; left: 79px; display: block; width: 273px;">
<li class="ui-menu-item" role="menuitem">
    <a class="ui-corner-all" tabindex="-1">Result 1</a>
</li>
<li class="ui-menu-item" role="menuitem">
    <a class="ui-corner-all" tabindex="-1">Result 2</a>
</li>
<li class="">Show 2 of 3456 results</li>
</ul>

如果它至少给出最小的一个真实结果,而不仅仅是最后一个音符文本,则这是有效的.

但是如果没有可用的结果并且只有注释文本(最后一项)"没有结果",那么我会在事件中收到错误消息:keyup,keydown,pageup和pagedown.

Firebug中的错误:item.offset()为null

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; top: 39px; left: 79px; display: block; width: 273px;">
<li class="">No Results</li>
</ul>

如何添加自定义列表结尾并且无法选择?

jQuery-UI 1.8.13

res*_*ign 2

我发现如果您的li元素不包含a标签,这个小部件会抱怨。我意识到这使得它可以选择,所以你要么必须根据你的情况稍微扩展一下类,要么创建一个CSS规则来确保不会li获得选定的状态(我承认这有点黑客行为)

  • 如果黑客有效,那么我倾向于称它们为“未记录编码的巧妙部分”:) (3认同)