JQuery自动完成-选择第一个项目

5
我正在使用jquery自动完成功能,我正在从ruby on rails应用程序中填充它,并创建自定义自动完成功能,代码如下:

  $.widget( "custom.code_complete", $.ui.autocomplete, {
    _renderMenu: function( ul, items ) {
            var self = this,
                currentCategory = "";
        $ul = ul;
            $.each( items, function( index, item ) {
                if ( item.category != currentCategory ) {
                    ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                    currentCategory = item.category;
                }
                self._renderItem( ul, item );
            });
        }
    });

  $("#r-code").code_complete({
    source: "URL",
    minLength: 2,
    select: function(event, ui) {
      $(".button-row").fadeIn();
      get_details(ui.item.url);
    }
  });

我正在将用户从另一个页面重定向到带有自动完成表单的页面,URL中带有一个参数,该参数是用于搜索的代码。以下是执行搜索的JS代码:

function ac_search(code) {
  $("#r-code").val(code);
  $("#r-code").code_complete('search', code);
}

这个程序可以完美执行搜索并显示下拉结果列表。我试图让脚本选择列表中的第一个结果,我已经尝试使用选择器:

$(".ui-menu-item:first a").click();

这段代码可以在自动完成列表中找到正确的元素,但是当我尝试模拟鼠标点击时,会出现以下错误:

TypeError: ui.item is null

有没有可能以编程方式单击自动完成结果列表中的第一项?

干杯

Eef

2个回答

19
$( el ).autocomplete({
  autoFocus: true
});

15

使用 autoFocus: true

 $( el ).autocomplete({
      autoFocus: true
      ...
 });

当您可以将autoFocus选项设置为true时,您并不真正需要这个扩展。 - Ziad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接