在typeahead js中不能设置valuekey与displaykey不同



我希望能够显示2个字段从我的JSON返回的数据在typeahead下拉框,但使用其中一个值。

事实上,下拉框显示我想要的两个字段,当我选择一个值时,文本框只有我想要的一个字段。

但是一旦我离开文本框,它就会被下拉值填充。

我的HTML字段:

<div class="form-group">
    <label for="txtlitm">Item Code:</label>
    <input type="text" class="form-control" id="txtlitm" name="txtlitm" autocomplete="off">
</div>

我的Javascript:

$('#txtlitm').typeahead(
{
    minLength: 4,
    highlight: true,
    hint: false
},
{
    displayKey: function(q) {
        return q.litm + " - " + q.dsc;
    },
    source: function (query, process) {
        $.getJSON('@VirtualPathUtility.ToAbsolute("~/home/GetItemCodes/")' + query, function (data) {
            process(data);
        });
    }
}).on('typeahead:selected', function (obj, data) {
    $('#txtlitm').val(data.litm);
});

使用display,例如

displayKey: 'name',
display: 'seq',

valueKey可能不推荐使用。我发现使用display的另一种解决方案,它与jquery-1.12.4typeahead 0.11.1一起工作。我初始化了2 bloodhounds,但只需要一个数据填充我的输入框。因此,用户可以输入ID或名称,单击建议,然后无论如何都用ID填充。

最新更新