0

我正在修改一些 jquery 自动完成代码。当前代码运行良好,响应列表以编程方式生成,但我想在我的响应列表顶部添加一个硬编码的“所有公司”,它的作用与响应列表中的其他条目一样。这是我正在使用的代码:

    $(function() {
    $( "#report_generator_search" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "lib/test.php",
                dataType: "json",
                type: "POST",
                data: {
                    action: "search_test",
                    featureClass: "P",
                    style: "full",
                    maxRows: 24,
                    searchTerm: request.term
                },
                success: function( f ) {
                    response( $.map( f, function( item ) {
                        return {
                            label: item.company_name + ' ('+item.company_id+') ' + item.generator_address,
                            value: item.company_name,
                            company_id: item.company_id
                        }
                    }));        
                }
            });
        },
        minLength: 1,
    });

我试过简单地添加另一个响应,但不行:

    response( $.map( f, function( item ) {
                        return {
                        label: "All Companies",
                        value: "All Companies",
                        company_id: ""
                    }
                    }));

而且我尝试过前置,它将“所有公司”放在顶部,但该按钮根本不像其他列表元素那样起作用:

    $('.ui-autocomplete').prepend('<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1">All Companies</a></li>');

任何帮助,将不胜感激。谢谢你。

4

1 回答 1

3

您只能调用 response() 一次。您需要创建一个结果列表:

success: function( f ) {
    // Begin with your hard-coded choices
    var staticChoices = [
        {
            label: "All Companies",
            value: "All Companies",
            company_id: ""
        }
    ];

    // Parse downloaded choices
    var dynamicChoices = $.map( f, function( item ) {
        return {
            label: item.company_name + ' ('+item.company_id+') ' + item.generator_address,
            value: item.company_name,
            company_id: item.company_id
        }
    });

    // Combine the two :)
    response(staticChoices.concat(dynamicChoices));
}
于 2012-07-12T07:15:02.690 回答