来自ajax源的自动完成需要label和id

时间:2017-05-03 02:16:04

标签: jquery ajax autocomplete

  1. 我有AJAX源的jQuery UI自动完成输入,我想在选中时在建议和文本框中显示标签,但我希望id进一步搜索。如何在幕后获取ID,以便我可以使用它进行进一步搜索,但是仍然在前面显示标签?

  2. 此外,建议(结果)太多并且在页面上显示一个大滚动,是否有任何方法可以根据用户类型限制或一次只显示少量记录? 到目前为止,这是我的代码:(到目前为止,建议/选择正在进行,但其传递的标签/值用于进一步搜索)

  3. HTML:

    <input type="text" name="CountyID" id="CountyID">
    

    JSON:

    [{"countyid":1302010,"name":"Fort Bend"},{"countyid":1011416,"name":"Houston"},{"countyid":1166827,"name":"Harris"}
    

    的jQuery / AJAX:

    $("#ShowID").autocomplete({
        source: function (request, response) {
            var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
            $.ajax({
                url: 'path/listCounty',
                 type: 'GET',
                 data: {State:StateID},
                 dataType: 'json',
                 success: function (data) {
                    response($.map(data.slice(0,10), function(v,i){
                        var text = v.name;
                        if ( text && ( !request.term || matcher.test(text) ) ){
                           return {
                                   label: v.name,
                                   value: v.name,
                                   id: v.countyID
                                  };
                            }
                    }));
                }
            });
            },
            minLength:2,
            delay: 100,
    
            select: function(event, ui) {
                 var e = ui.v;
                 var result = "value= " + e.id;
                  $("#ShowID").append(result);
    
            }
        });
    

1 个答案:

答案 0 :(得分:0)

  1. 您可以将所选的countyId保存在隐藏字段中&#34;选择&#34;自动完成功能并使用该值进行进一步搜索

  2. 请参阅与您https://stackoverflow.com/a/7617637/4868839相同的问题。 此外,如果您已经知道有多少结果可以限制服务器端本身的响应,这也会提高性能。