如何通过twitter在typeahead中获取价值?

时间:2016-03-21 10:57:51

标签: typeahead.js bootstrap-typeahead twitter-typeahead

我实施了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

但这不起作用

1 个答案:

答案 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);