jQuery自动完成功能不选择项

问题描述

| 在选项\“ source \”中,我用ajax得到了结果+ 1个自定义注释文本以及有关可能结果的信息。如:“显示2个结果(共3456个结果)”。它仅是用户的信息。 对于-ul-列表中的最后一个条目,我将不会处理以下事件:keyup,keydown,pageup和pagedown。 为此,我在选项“打开”中设置如下:
open: function(event,ui) {
$(\"ul.ui-autocomplete.ui-menu li:last\").removeClass(\"ui-menu-item\").removeAttr(\"role\").html(\'Show 2 of 3456 results\');
},
HTML现在看起来像这样:
  •     结果1
  •     结果2
  • 显示3456个结果中的2个 如果它至少给出一个实际结果,而不仅仅是最后一个注释文本,则此方法有效。 但是,如果没有结果可用,而只有注释文本(最后一项)\“没有结果”,那我会在以下事件中收到错误消息:keyup,keydown,pageup和pagedown。 Firebug中的错误:item.offset()为null
    • 没有结果 我该怎么做才能将自定义-li-添加到列表末尾并且无法选择? jQuery-UI 1.8.13     

      解决方法

              我发现,如果您的
      li
      元素不包含
      a
      标记,则此小部件将抱怨。我意识到这使得它可以选择,所以您要么必须针对您的情况扩展该类,要么创建一个CSS规则以确保
      li
      不会处于选定状态(这有点麻烦,我承认)     ,        而不是搞砸CSS选择器,为什么不绑定到to4ѭ和
      change
      事件来检查要添加到对象的自定义数据(可通过这些事件的with6ѭ参数获得)?您最终将得到以下内容:
      $(function() {
          $(\"#acInput\").autocomplete({
                                          source: availableTags,select: function(event,ui) { 
                                              // if it\'s your info item,then
                                              event.preventDefault(); 
                                          },change: function(event,then
                                              event.preventDefault();
                                          }
                                     });
      });
      
      请注意,
      preventDefault()
      只是停止了该事件。在某些情况下(使用键盘浏览列表时),它将使用项目的值填充输入。如果您确定所选项目或将要更改为的值实际上是您的数据项,则希望测试重置文本框的值。