如何在autocomplete()方法上显示Jquery UI自动完成小部件?

如何在autocomplete()方法上显示Jquery UI自动完成小部件?,jquery,autocomplete,jquery-autocomplete,jquery-ui-autocomplete,Jquery,Autocomplete,Jquery Autocomplete,Jquery Ui Autocomplete,我希望有人能帮上忙,我很难让jQueryUI的autocomplete在asp.net应用程序中使用$.ajax({})调用。我可以让它进行ajax调用,得到服务的响应和位置列表但是自动完成列表仍然没有显示,当我按下向下箭头键时,位置列表就会显示在页面上 从web方法中获取位置列表后,应立即呈现/显示它。怎么可能呢 我正在使用jquery站点的自动完成: 示例代码 function GetCitiesLikeList(objcity) { var cities = "";

我希望有人能帮上忙,
我很难让jQueryUI的autocomplete在asp.net应用程序中使用$.ajax({})调用。
我可以让它进行ajax调用,得到服务的响应和位置列表
但是自动完成列表仍然没有显示,当我按下向下箭头键时,位置列表就会显示在页面上
从web方法中获取位置列表后,应立即呈现/显示它。怎么可能呢

我正在使用jquery站点的自动完成:

示例代码

function GetCitiesLikeList(objcity) {    
var cities = "";
        $.ajax({
            type: "POST",
            url: http://localhost/testweb/location.asmx/Getlocations,
            data: "{ City : '" + objcity + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d != null && msg.d != "") {
                    cities = "";
                    cities = msg.d;
                    $("#citilist").autocomplete({
                        source: cities
                    });
                }
                else
                    $("#citilist").attr("autocomplete", "off")
            },
            error: function (xhr, ajaxOptions, thrownError) { return false; }
        }); 
}

jqueryautocomplete只有在按下键时才会触发,这就是发生在您身上的情况。这就是它设计的功能。如果你想定制的话。您应该编写自己的逻辑。

要显示列表,只需调用
$('citilist')。触发器(“keydown”)

这使它认为您正在输入citilist,并将触发ajax帖子。

我找到了另一种方法来触发jQuery UI自动完成功能,而无需在框中键入:

$('#field').autocomplete({
    source: '/path/to/data',
    minLength: 0
});
$('#button').click(function() {
    $('#field').autocomplete('search', '')
});

发送“搜索”参数将触发搜索功能。第二个参数是发送到/path/to/data的数据处理程序的“term”。

谢谢@ariel,它将触发事件并获取结果,但当我按下keydown键时,我遇到了其他问题,然后在自动完成列表中获取以前的查询结果。例如:我尝试搜索“los ang”,然后它获取与“los ang*”相关的所有位置,然后我删除所有值并尝试写入“mexi”,然后它向我显示以前的结果。。如何从中删除或刷新以前的结果..我想你需要在触发之前调用GetCitiesLikeList()。我相信它是这样工作的->GetCitiesLikeList->trigger->success。所以当你触发时,列表还没有返回。所以你必须在success方法中触发。@ariel我调用了success方法。。like=>success:function(msg){if(msg.d!=null&&msg.d!=“”){cities=“;cities=msg.d;$(“#citilist”).autocomplete({source:cities});$(“#citilist”).trigger(“keydown”){else$(“{citilist”).attr(“autocomplete”,“off”)},你也做得很好。。谢谢