jquery自动完成-在选择事件时将数据添加到列表

jquery自动完成-在选择事件时将数据添加到列表,jquery,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,我将jquery自动完成与json数据源一起使用 这是我的代码: clientId、clientName是输入字段的id $("#clientId").autocomplete({ source: function(request, response){ var clientId=request.term; $.ajax({ type:"GET", url:"getCl

我将jquery自动完成与json数据源一起使用

这是我的代码: clientId、clientName是输入字段的id

$("#clientId").autocomplete({
        source: function(request, response){
            var clientId=request.term;
            $.ajax({
                type:"GET",
                url:"getClients.htm?ClientId=" + clientId +"&ClientName=",
                dataType:"json",
                success: function(data){
                    if(pageCountClientId == 0){
                data.push({clientId:"More Options",clientName:"More Options"});
                        pageCountClientId++;
                    }
                    else{
                data.push({clientId:"Previous Options",clientName:"Previous Options"});
                        pageCountClientId++;
                    }
                    response($.map(data,function(value,key){
                        return{
                            label:value.clientId,
                            value:value.clientName
                        };
                    }));                                    
                }
            });
        },
        minLength: 1,
        select: function(event, ui){
            if(ui.item.value == "More Options"){
                pageCountClientId++;
            }
            else if(ui.item.value == "Previous Options"){
                pageCountClientId--;
            }
            else{
                $("#clientName").val(ui.item.value);
                $("#clientId").val(ui.item.label);
                $("#clientName").attr("disabled", "disabled"); 
                $("#clientId").attr("disabled", "disabled");
            }
            return false;
        },
    });

因此,现在当用户单击“更多选项”值时,在选择事件中,我希望获得下一组结果,并将其显示在出现的下拉列表中。如何做到这一点。任何指向正确方向的指针都将受到欢迎。

我认为这应该是从
select
处理程序调用
search
的问题。然而,正如您可能已经发现的那样,这是行不通的

您应该能够通过添加一个小的超时来使其工作:

select: function(event, ui){
    if(ui.item.value == "More Options"){
        pageCountClientId++;
        setTimeout($.proxy(function () {
            $(this).autocomplete('search', this.value);
        }, this), 1);
    }
    else if(ui.item.value == "Previous Options"){
        pageCountClientId--;
        setTimeout($.proxy(function () {
            $(this).autocomplete('search', this.value);
        }, this), 1);
    }
    else{
        $("#clientName").val(ui.item.value);
        $("#clientId").val(ui.item.label);
        $("#clientName").attr("disabled", "disabled"); 
        $("#clientId").attr("disabled", "disabled");
    }
    return false;
},
示例:


该示例使用本地源代码,但模拟AJAX请求。希望这有帮助

谢谢你,安德鲁!!成功了。我能够使用Auto的代理函数和搜索函数进行ajax调用complete@kayzid:很高兴它成功了!如果答案有帮助,请接受。