我实施了twitter typeahead以使用户能够选择他的位置。他键入了他的位置name
,然后从列表中进行选择,他所选位置的id
将张贴在表单上。
这很好用,假设我有以下列表:
[
United States : 1,
Canada : 2,
England: 3,
China: 4,
India: 5,
.... // other locations
]
现在用户选择加拿大并提交表单,id 2
将保存在数据库中。但是如果用户返回到相同的表单,我会进行查询以获取他选择的位置,在这种情况下,将返回id 2
。
如何在输入中自动选择加拿大以显示他选择的位置?
我试过
$('.typeahead').typeahead('val', value) //where value = 2
但这不起作用
答案 0 :(得分:1)
因为typeahead控件只是一个html输入,所以没有内置的机制来根据id值填充文本值。你必须自己做那部分。
Hibernate EntityManager User guide on Transactions and concurrency
您可以使用各种不同的方法来完成此任务,但我在实现中使用on focus
来处理它。
.on('focus', function() {
if (defaultOption.length) {
var nm = $.map(locs, function(obj) {
if (obj.id === defaultOption)
return obj.name; // or return obj.name, whatever.
});
console.log(nm);
$(this).data().ttTypeahead.input.trigger('queryChanged', nm);
}
});
在这种情况下,我提供了一个defaultValue(这将是从数据库返回的内容),然后将其作为第一项添加到源中,然后触发查询已更改事件。
处理它的另一种方法是简单地预先填充输入框中的预期值。我已经包含了一种演示,你可以在链接小提琴的末尾处理这个问题。代码检查默认值,然后使用正确的名称填充输入。
if (defaultOption.length) {
nm = $.map(locs, function(obj) {
if (obj.id === defaultOption)
return obj.name; // or return obj.name, whatever.
});
}
$('.typeahead').val(nm);