jQuery AJAX Typeahead自动完成禁用过滤器

时间:2018-09-01 12:33:56

标签: ajax bootstrap-typeahead

我使用的是较旧版本的typeahead库,以下代码可以正常运行,但是会跳过搜索查询中没有单词的结果。

$('.to').typeahead({
        minLength : 3,
        hint: true,
        dropdownFilter: "All",
        source: function (query, result) {
            $.ajax({
                url: "citySearch.php",
                data: 'query=' + query,            
                dataType: "json",
                type: "POST",
                success: function(data){
                    result($.map(data, function (item, i) {
                        if (item.TypeCode == 'C') {
                            return '<i class="fa fa-map-marker" aria-hidden="true"></i> ' + item.CityName + ', ' + item.CountryCode + ' (' + item.CityCode + ') ' + i;
                        } else if (item.TypeCode == 'A') {
                            return '<i class="fa fa-plane" aria-hidden="true" style="padding-left: 5px;"></i> ' + item.AirPortName + ' (' + item.AirPortCode + ') ' + i;
                        };
                    }));
                }
            });
        },
        afterSelect: function (item) {
            var buffer = item.replace('<i class="fa fa-map-marker" aria-hidden="true"></i> ', '');
            buffer = buffer.replace('<i class="fa fa-plane" aria-hidden="true" style="padding-left: 5px;"></i> ', '');
            $('#to').val(buffer);
            setTimeout(function(){
                $('.depart-field').select();
                $(".depart-field").datepicker('show');
            }, 16);
        }
    });

如果我将搜索功能替换为以下内容,它将显示所有结果,而不会跳过其中的任何一个..我是否缺少任何查询?

success: function(data){
    result($.map(data, function (item, i) {
        return item.CityName + item.AirPortName;
    }));
}

0 个答案:

没有答案