【发布时间】: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