触发程序使用jQuery的预输入事件(trigger the typeahead event pro

2019-10-29 11:55发布

我使用的引导与typeaheads工作。 我可以使用输入字段中设置类型aheads:

var subjects = ['PHP', 'MySQL', 'SQL', 'PostgreSQL', 'HTML', 'CSS', 'HTML5', 'CSS3', 'JSON'];
$('#search-field').typeahead({source: subjects});

但是,这是静态的。 我想提供自动提示功能,从而为用户键入的字符/字,我获取由用户输入的查询,使一个HTTP请求来获取JSON格式的建议。 以下是我的代码来做到这一点:

$('#search-field').on('keyup', function(){
// fetch the search query
var query = $(this).val();
// array containing suggestions
var suggestions=[];

$.getJSON('http://localhost:8983/solr/suggest/?q='+ query +'&wt=json&json.wrf=?', {

})
    .done(function(response){
        console.log(response);
        $.each(response.spellcheck.suggestions[1].suggestion, function(){
            // add the suggestions into the array
            suggestions.push(this);
        });

        // set the source for typeahead
        $('#search-field').typeahead({source: suggestions});
        // how to trigger the search field to show these suggestions now???
    });

所以你可以看到,我取的建议,建立一个数组并设置预输入源。 但建议不会因为显示了有什么东西,应进入这样做会再次打电话给我“的keyup”事件处理程序:(!那么,有没有办法解决这个问题,只要源登记显示typeaheads方式为了它??

Answer 1:

请求的功能已经内置到预输入库,它允许源是一个函数给出了该文件下面给出

$('#search-field').typeahead({
    source: function(query, process){
        $.getJSON('http://localhost:8983/solr/suggest/?q='+ query +'&wt=json&json.wrf=?', {

        }).done(function(response){
            var suggestions=[];
            $.each(response.spellcheck.suggestions[1].suggestion, function(){
                // add the suggestions into the array
                suggestions.push(this);
            });

            process(suggestions)
        });
    }
});


文章来源: trigger the typeahead event programmatically using jquery