我正在使用JQuery自动完成插件(http://docs.jquery.com/Plugins/Autocomplete)。我的页面中有一个输入字段。下面的代码可以使用。
<script>
$(document).ready(function(){
somedata = "Core Selectors Attributes Traversing Manipulation CSS Events Exciting Electronic Effects Ajax Utilities".split(" ");
$("#by").autocomplete(somedata);
</script>
现在,当by输入字段获得焦点时,我创建一个ajax get请求,该请求正确地获取由“\ n”分隔的一些字符串组成的数据,并且我想用接收到的数据填充by字段。但是从$ .get内调用自动完成功能不起作用,如下所示。有什么方法可以解决这个问题吗?
$(document).ready(function(){
somedata = "Core Selectors Attributes Traversing Manipulation CSS Events Exciting Electronic Effects Ajax Utilities".split(" ");
var url = "<some url here>";
$("#by").focus(function(){
$.get(url,function(result) {
$("#by").autocomplete(somedata); //Does not work
$("#by").autocomplete(result.split("\n")); //Does not work
});
});
});
谢谢。
答案 0 :(得分:0)
焦点事件为时已晚,无法加载自动完成的值。从插件的描述:
通过提供自动完成的字段焦点 或进入它的东西, 插件开始搜索匹配 条目并显示值列表 从中选择。通过输入更多 字符,用户可以过滤掉 列表更好地匹配。
因此,当触发焦点事件时,自动完成功能可以完成工作。您正在尝试从同一事件加载数据。事实上,在调用事件之后加载数据,因为$ .get方法的回调是异步调用的。