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