jQuery自动完成选择函数未触发

时间:2015-06-14 04:32:24

标签: javascript jquery jquery-autocomplete

我正在编写一个围绕jQuery自动完成的可重用包装器,由于某些原因我无法使select回调起作用。

根据下面的代码,永远不会调用select()函数。我搞砸了什么?对于如何使用jQuery自动完成小部件指定select回调,是否存在一些隐藏的约束?

注意:这只是半写的。只是想让select正常工作。

// Note: 'input' is a jQuery object.
name.space.ThingSuggest = function(input) {
  this.input = input;

  // Set up an autocomplete widget on the given input form.
  this.input.autocomplete({
    source: name.space.ThingSuggest.SOURCE_URL,
    delay: 500,
    select: this.select.bind(this)
  });

  this.input.autocomplete('instance')._renderItem = name.space.ThingSuggest.renderItem;
};

name.space.ThingSuggest.SOURCE_URL = // some URL

name.space.ThingSuggest.prototype.select = function(event, ui) {
  this.input.val(ui.item.label);

  return false;
};

name.space.ThingSuggest.renderItem = function(ul, item) {
  return $('<li>', { value: item.value })
      .append(item.label + ' <span>@' + item.username + '</span>')
      .appendTo(ul);
};

要清除 ,自动完成和_renderItem正在按预期工作。只有suggest回调没有触发。

我一直盯着这种方式太久了......所以我知道这是一个愚蠢的不匹配的支撑物。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我混淆了selectfocus事件。因为我真的很蠢。

select确实可以在上面的代码示例中使用,但我没有触发它,因为我只是在列表中移动焦点,而不是实际点击/选择一个条目。

我真正想做的事情 - 在列表项焦点更改上使用回调 - 需要使用focus回调。

答案 1 :(得分:0)

我不知道该在哪里发布, 它可能与帖子无关,但是我想引起您的注意,我使用的是错误版本的jquery autocomplete,不是jquery ui,而是npm软件包中与jquery ui无关的版本,因此,如果您未触发“ select”事件,请尝试从jquery网站ui下载版本。

https://jqueryui.com/download