1

我正在使用带有 ajax 的 typehead 进行自动完成。在进行搜索时,我面临着不需要的过滤器。

例如,当我搜索“回到未来”时,没关系。

但是当我搜索“Future Back”时,我也期待看到 -> “Back to the Future”

 $('.ajax-typeahead').typeahead({

    source: function (query, process) { 
        return $.post('http://www.ilanlarnette.net/autocomplete/lokasyon', { lokasyon: query }, function (data) {
            objects = [];
            map = {};
            $.each(data, function(i, object) {
            map[object.label] = object;
            objects.push(object.label);
            });
            return process(objects);
        });
    },
    items: 15,

    updater: function (item) {
        alert("selected "+item+" "+map[item].id+" "+map[item].mahalle+" "+map[item].ilce);
    }
});

工作示例可以在这里找到

即使它在搜索结果集中。结果未显示在typehead的下拉菜单中。

4

1 回答 1

1

当我输入future您的 jsfiddle 示例时,我看到与后端相关的错误,我认为您应该先修复它。

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined variable: lokasyon_arrays</p>
<p>Filename: controllers/autocomplete.php</p>
<p>Line Number: 34</p>

</div>null

就像Rocket Hazmat所说的,你需要为你的 typeahead 实现自定义匹配器,所以它看起来像这样。

yourInput.typeahead({
    source: yourSource,
    matcher: function(item) {
        // The 'item' parameter is any item in your list (e.g. "Pizza" )
        // Use this.query to access the search string (e.g. "I want a Pizza")
        // return true if this.query matches item through your custom logic
    }
});
于 2013-07-09T16:56:26.990 回答