0

我目前正在开发一个需要自动完成位置的界面。

位置列表当前是通过对 JSON 对象的 AJAX 调用获得的,该对象是从具有至少三个字符的搜索参数的 URL 动态生成的。

有没有办法(我猜最有可能使用 on 键),通过使用输入当前值进行 ajax 调用然后在自动完成选择中返回这些值来填充自动完成,而不是依靠 jquery 创建自动完成列表从它的源头。

我目前所拥有的似乎效率低下,并且无法按您的预期工作(出于某种原因,自动完成仅出现在四个字符之后)。

               function buildAutoComplete(fieldId) {

                var inputValue = $("#" + fieldId).val()

                var resultsList = []

                if(inputValue.length > 2) {
                    get("/location?prefix=" + inputValue,inputHit,inputMiss);
                }

                function inputHit(result) {

                    for(var i=0; i<result.length; i++) {
                        resultsList[i] = result[i].display_text
                    }
                    $("#" + fieldId).autocomplete({
                        source: resultsList
                    });
                }

                function inputMiss() {

                }
            }

            $("#originField").keyup(function() {
                buildAutoComplete("originField");
            });
4

1 回答 1

0

事实证明,我的做法完全错误。

我知道的自动完成 API 允许远程源自动包含输入值的术语 URL 参数。

所以生成的代码看起来像

$("#originField").autocomplete({
    minLength: 3,
    source: "/location"
});

它所需要的只是源代码后面的代码来查找参数“term”而不是“prefix”。

使用不那么复杂和更小的代码库更加稳定。

于 2013-09-11T10:15:42.093 回答