【问题标题】:jQuery autocomplete select function not firingjQuery自动完成选择功能未触发
【发布时间】:2020-03-14 05:01:35
【问题描述】:

我正在围绕 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 回调没有触发。

我一直盯着这种方式太久了......所以据我所知,这是一个愚蠢的不匹配的大括号之类的。

提前致谢!

【问题讨论】:

  • 您认为this 在当前范围内是什么?
  • 在上述哪个范围内?
  • 您的问题与什么有关? this.select.bind(this)这是一个模型绑定问题还是ThingsSuggest问题?
  • @DhirajBodicherla,感谢您的帮助!
  • @honktronic:很高兴它有帮助

标签: javascript jquery jquery-autocomplete


【解决方案1】:

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

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

我真正想做的——在列表项焦点更改时使用回调——需要使用focus 回调。

【讨论】:

    【解决方案2】:

    我不知道在哪里发布这个, 它可能与帖子无关,但我想提请您注意,我使用了错误版本的 jquery 自动完成功能,不是 jquery ui 之一,而是来自与 jquery ui 无关的 npm 包中的一个,因此,如果您没有触发“选择”事件,请尝试从 jquery 站点 ui 下载版本。

    https://jqueryui.com/download

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 2014-02-23
      • 2013-05-20
      • 2017-02-16
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      相关资源
      最近更新 更多