jQuery的jQuery自动完成

时间:2014-08-19 16:46:51

标签: javascript jquery jquery-ui autocomplete jquery-ui-autocomplete

我的JSON就像这样

var data = [{"code":"1162","format":"Subscription","name":"Picture Manager ","action":"202"},
{"code" : "1094","format":"Store","name":"Listing Designer","action":"168"},
{"code" : "1407","format":"Subscription","name":"MOTOR_PACKAGE","action":"403"},
{"code" : "1024","format":"Fixed Price","Name":"Picture","action":"120"},
{"code" : "1051","format":"Auction","name":"Gallery Days","action":"49"},
{"code" : "5059","format":"Lead Generation","name":"Scheduled Listings","action":"160"}];

我可以创建一个像

这样的建议函数

的jQuery

$(document).ready(function(){
    serverurl = "getJson";
    $.getJSON( serverurl, function(data) {
        $("#feeCode").autocomplete({
            source: function (request, response) {
                response($.map(data, function(v,i){
                    return {
                             label: v.format+' / '+v.name+' ('+v.code+')' ,
                             value: v.format+' / '+v.name+' ('+v.code+')'
                    };
                }));
            }
        });
    }); 
});

HTML

<input class="catinputbox" type="text" id="feeCode" >

它会显示像这样的建议

Auction / Gallery Days (1051)
Fixed Price / Picture (1024)

但它没有搜索模式,建议是静态的。我想搜索并给出他提供的字符串的适当建议。就像他打字&#34;固定&#34;建议应该是&#34;固定价格/图片(1024)&#34;或者如果他输入&#34; Days&#34;或&#34; 1051&#34;那么&#34;拍卖/画廊日(1051)&#34;。

我之前从未使用过自动填充,如果有人可以解释我自动完成,请求,响应和搜索。这对我很有帮助

1 个答案:

答案 0 :(得分:2)

你关闭了,只是做了一些调整:

$(document).ready(function() {
    serverurl = "getJson";

    $.getJSON(serverurl, function(data) {
       /* When the response comes back, create an array of objects that the 
        * autocomplete widget can use, using `$.map`:
        */
        var autocompleteData = $.map(data, function(v, i) {
            return {
                label: v.format+' / '+v.name+' ('+v.code+')' ,
                value: v.format+' / '+v.name+' ('+v.code+')'
            };
        });

        /* Initialize the autocomplete widget with the prepared data: */
        $("#feeCode").autocomplete({
            source: autocompleteData
        });
    }); 
});

示例: http://jsfiddle.net/fny66zkd/

在这种情况下,您不需要为source参数提供功能。如果要执行自定义AJAX请求或其他类型的自定义过滤功能,请执行此操作。

您的代码之前没有工作,因为当您向source参数提供函数时,您基本上告诉窗口小部件想要进行过滤

  

我之前从未使用过自动填充,如果有人可以解释我自动完成,请求,响应和搜索。这对我很有帮助

  • 可以为source选项提供回调函数(或字符串或数组)。此函数接受两个参数requestresponse
    • request是一个对象,包含有关用户输入内容的信息。您可以访问request.term
    • 来访问他们输入的内容
    • response是jQueryUI传递函数的回调函数。当您准备好通知要向用户显示的结果集的窗口小部件时,可以调用此函数。
    • official documentation
    • 提供了更多信息
  • search方法手动调用自动完成小部件的搜索功能。同样,official documentation
  • 中提供了更多信息