【问题标题】:Destroy jQuery autocomplete销毁 jQuery 自动完成
【发布时间】:2015-11-21 18:06:27
【问题描述】:

我在我的一个项目中使用Autocomplete jQuery UI,我想在一种情况下销毁自动完成功能。

我有一个网页,其中有 2 个字段,即 CountryExt No。在用户选择一个国家/地区的地方,我触发了一个 ajax 调用以获取该国家/地区的所有分机号。如果该国家/地区没有可用的分机,那么我在Ext No 字段上设置了自动完成列表。因此,如果某个国家/地区存在分机号,那么我可以在 Ext No 字段上设置新的自动完成列表。但是有些国家没有分机号,所以在这种情况下,我想销毁 Ext No 字段上的自动完成列表。

下面是我用来销毁 Ext No 字段上的自动完成功能的代码。

if ($('#ext_no').data('autocomplete')) {
  $('#ext_no').autocomplete("destroy");
}

但这不起作用。我总是把$('#ext_no').data('autocomplete') 当作undefined。第一次它是未定义的很好,但是当用户下次选择一个国家时,它不应该返回undefined

如果有人知道我在这里做错了什么,或者如果在该字段上设置了字段的自动完成功能,请告诉我。

【问题讨论】:

  • 使用的jquery ui版本
  • 是的,我正在使用 jQuery UI 自动完成功能。
  • 哈哈,他想知道您使用的是哪个版本的 jQuery UI。 :)

标签: jquery ajax user-interface autocomplete


【解决方案1】:

对我来说是这样的:

jQuery('#autocompleteid').on('blur', function()
    {
        jQuery(".autocomplete-suggestions").remove();
    });

这将删除对autocomplete 的所有建议,并且不会为该字段提供autocomplete

【讨论】:

    【解决方案2】:

    我认为在较新版本的 jQuery UI 中,数据属性名称改为uiAutocomplete 而不是autocomplete 所以

    if ($('#ext_no').data('uiAutocomplete')) {
      $('#ext_no').autocomplete("destroy");
    }
    

    【讨论】:

    • 我仍然收到undefined
    • 我在文本字段中使用它有关系吗?