【问题标题】:Why isn't JQuery showing my autocomplete fields?为什么 JQuery 不显示我的自动完成字段?
【发布时间】:2017-08-18 03:44:47
【问题描述】:

上下文:我正在尝试使用从服务器发送的数据来设置 JQuery 自动完成功能。当用户更改某个字段时,会从后端发送自动填充数据,以便他们可以根据需要选择提供的值。后端代码功能完善,如果我在前端console.log(data)it 可以看到自动完成数据数组。

我的问题是,即使前端代码有效地请求和接收自动完成数据,当我使用 JQuery 的内置自动完成选项时,它也不会在前端显示选项。

这是我的代码:

$.ajax({
      type: "GET",
      url:"/autocomplete/"+event.target.id+"/"+$(this).val(),
      success : function(data){
        console.log(data);
        $(event.target.id).autocomplete({
          source: data
        });
      }
});

event.target.id 是我想自动完成的输入字段的 ID。同样,所有这些工作都非常好。当我console.log(data) 时,它显示了我想用于自动完成的项目数组,但是当我实际运行时

$(event.target.id).autocomplete({source:data});

它没有在前端显示任何自动完成选项。

知道如何解决这个问题吗?我已经禁用了我的广告拦截器并在许多不同的浏览器中进行了尝试,但结果从未显示为标准的下拉列表自动完成。

【问题讨论】:

  • 哪个浏览器 - internet exploder 有一个全局 event 对象,这是当前事件 - chrome 复制了这个荒谬的......你在 success 中的当前 event 可能不是你想象的那样是 - console.log(event) 在 ajax 调用之前,然后在成功回调中 - 它会改变吗?
  • 我已经找到了使用你给我的解决方案。当我 console.log(event.target.id) 它给了我想要自动完成的字段的名称,但它没有给出在 JQuery 中表示 id 所必需的“#”。我已经发布了解决方案作为我自己问题的答案。感谢您的帮助!
  • 当然可以!!你只需要 $(event.target) 代替 - 在使用名为 event 的 var 时我仍然要小心,除非你迎合互联网爆炸者的愚蠢:p
  • 不,解决方案没有使用$(event.target),因为它返回了整个数组。解决方案是使用$("#" + event.target.id),效果很好。
  • 说真的,$(event.target) 应该与$("#" + event.target.id) 相同......就像$(HTMLelement)$('#' + HTMLelement.id) 其中HTMLelement 有一个ID 属性

标签: javascript jquery jquery-ui autocomplete


【解决方案1】:

使用@Jaromanda X 建议的策略,我发现event.target.id 字段正在返回我打算自动完成的字段的名称,但它没有包含通过JQuery 表示ID 所需的“#” .功能代码现在如下所示:

$.ajax({
      type: "GET",
      url:"/autocomplete/"+event.target.id+"/"+$(this).val(),
      success : function(data){
        console.log(data);
        $("#"+event.target.id).autocomplete({
          source: data
        });
      }
});

是的,感觉有点 hacky,但运行的代码实际上就是运行的代码。

【讨论】:

    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2012-04-25
    • 2016-07-19
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多