Twitter Typeahead以编程方式选择并触发选择

问题描述 投票:3回答:2

我想实现功能,如果我单击一个DOM元素,则它应该自动在其中填充具有指定值的一个typeahead,它应该为此触发typeahead:selected

我发现许多与此相关的查询,答案为jQuery#typeahead('val', val)jQuery#typeahead('setQuery', myQuery)

但是两者都只选择了我想要的选项,但没有触发点击下拉选项。有什么办法吗?

typeahead.js twitter-typeahead
2个回答
3
投票

要像用户单击该项目一样触发它,您必须使用您的数据更新字段中的值。

简短的答案就像Sergey Stativa发表:$('.typeahead').val(yourValue).trigger('change');

这里有一个用例的长答案,我正在添加一个使用Bloodhound的解决方案,但是您的问题的核心不是这个复杂的问题,我只是希望它将来可以对某人有所帮助,所以一切都在这里。

假设您具有这样的模板:

var arrNames = ['Luke','Han','Leia'];

var nameDisplayBh = new Bloodhound({
        datumTokenizer: function (datum) {
            return Bloodhound.tokenizers.whitespace(datum.RebelNames);
        },
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        local: arrNames
    });


    $('.typeahead').typeahead({
        hint: true,
        highlight: true,
        minLength: 1
    },{
        name: Names Display,
        source: nameDisplayBh.ttAdapter(),
        display:"RebelNames",
        templates:
        {
            suggestion: function(data)
            {
                return "<div>data.name</div>";
            }
        }
   });


$('.typeahead').bind('typeahead:select', function(ev, suggestion) 
    {
        console.log(suggestion.name);
    });


var nameInYourList = arrNames[0];
$('.typeahead').val(nameInYourList).trigger('change');

-1
投票

您应该调用change事件以应用新值

$('.typeahead').val(Your value).trigger('change');
© www.soinside.com 2019 - 2024. All rights reserved.