Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引导Ajax Typeahead在查询不在displayField中时不显示结果_Javascript_Twitter Bootstrap_Twitter Bootstrap 3_Typeahead.js_Typeahead - Fatal编程技术网

Javascript 引导Ajax Typeahead在查询不在displayField中时不显示结果

Javascript 引导Ajax Typeahead在查询不在displayField中时不显示结果,javascript,twitter-bootstrap,twitter-bootstrap-3,typeahead.js,typeahead,Javascript,Twitter Bootstrap,Twitter Bootstrap 3,Typeahead.js,Typeahead,我在Django应用程序上实现了搜索系统中的页面。我通过AJAX获得与基于查询的搜索结果相匹配的页面,用户可以单击typeahead建议并转到相关页面 但是,如果查询字符串不是displayField(title)的一部分,则建议不会显示,尽管我可以通过搜索机制看到它返回 例如,如果我搜索“motion picture”,我会通过搜索返回一个JSON对象,例如: { title: "Movies", url: "/movies/", description: "Fi

我在Django应用程序上实现了搜索系统中的页面。我通过AJAX获得与基于查询的搜索结果相匹配的页面,用户可以单击typeahead建议并转到相关页面

但是,如果查询字符串不是displayField(title)的一部分,则建议不会显示,尽管我可以通过搜索机制看到它返回

例如,如果我搜索“motion picture”,我会通过搜索返回一个JSON对象,例如:

{
     title: "Movies",
     url: "/movies/",
     description: "Find a motion picture in your area"
}
当在description属性中找到匹配项时,我仍然希望向用户显示结果,但Typeahead仅在有匹配提示时才会显示

如果查询不在displayField中,如何显示搜索结果

注意:我正在使用带Bv3的typeahead引导

$(document).ready(function ($) {
    var JSONSearchURL = "/search/";
    var searchBox = $('#search-form');
    searchBox.typeahead({
        onSelect: function (item) {
            window.location = item.value;
        },
        ajax: {
            url: JSONSearchURL,
            timeout: 800,
            displayField: "title",
            valueField: "url",
            method: "get",
            dataType: "JSON",
            preDispatch: function (query) {
                return {
                    q: query
                }
            },
            preProcess: function (data) {
                return data;
            }
        }
    });
});

默认情况下,
bootstrap ajax-typeahead
使用
displayField
搜索匹配项。如果要覆盖此行为并搜索其他字段,则需要覆盖
grepper
事件。类似的方法应该可以工作(未经测试):


请参见此处的
grepper的默认实现:

默认情况下,
bootstrap ajax-typeahead
使用
displayField
搜索匹配项。如果要覆盖此行为并搜索其他字段,则需要覆盖
grepper
事件。类似的方法应该可以工作(未经测试):


请参见
grepper的默认实现:

谢谢!由于显示的所有结果都是通过后端搜索进行匹配的,因此我使用
matcher
方法进行了类似的修复,使其始终返回
true
。谢谢!由于显示的所有结果都是通过后端搜索进行匹配的,因此我使用
matcher
方法进行了类似的修复,使其始终返回
true
grepper: function(data){
    var that = this;
    if(data && data.length){
        items = $.grep(data, function(item){
            return that.matcher(item['description']);
        });
        return items;
    }
    return null;
}