JQuery自动完成搜索方法

时间:2011-11-04 10:27:10

标签: javascript jquery autocomplete jquery-autocomplete

我在我的网站上使用JQuery UI自动完成功能。我正在创建自动完成对象:

  $.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);
    }
  });

这样可以自动完成自动填充字段。我可以在场内搜索很好,它会带来结果没有问题。但有时用户将从另一个页面重定向,并将自动完成值设置为参数,如果是这种情况,将以编程方式触发自动完成,我尝试使用以下代码执行此操作:

function parse_param_code(code) {
  console.log(code);
  $("#r-code").autocomplete('search', code);
}

成功调用此方法,并将代码输出到控制台,但不会触发自动完成搜索,也不会执行任何操作。我在代码中做错了什么不能触发搜索?我已经阅读了JQuery UI文档,上面的代码应该触发搜索方法。任何帮助将不胜感激。

由于

EEF

1 个答案:

答案 0 :(得分:3)

改变 $("#r-code").autocomplete('search', code);

到您自己的小部件名称,即:

$("#r-code").code_complete('search', code);

产生所需的结果。

示例:http://jsfiddle.net/vHJsu/

如果您执行console.log($("#r-code").data("autocomplete"));,您会注意到该元素没有附加该名称的小部件。