在bootstrap typeahead上使用html输入数据字段属性

时间:2014-08-27 20:27:06

标签: javascript jquery json attributes bootstrap-typeahead

我试图获取一个数据字段属性来选择我的" objects.json"将用作我的Bootstrap Typeahead输入文本的来源,例如:

form.html

<input type="text" data-provide="typeahead" data-field="name">

form.js

$("[data-provide=typeahead]").typeahead({
  source: function(query, process) {
    return $.get("/objects.json", {
      query: query
    }, function(data) {
      return process($.map(data, function(o) {
        return o[$(this).data('field')];
      }));
    });
  }
});

objects.json

[{"id":1,"name":"lorem"},
 {"id":2,"name":"ipsum"},
 {"id":3,"name":"dolor"}]

问题是&#34; $(this).data(&#39;字段&#39;)&#34;在Javascript上没有获取HTML数据字段属性。

提前致谢!

3 个答案:

答案 0 :(得分:1)

不知道这是否适用于您,但就我而言,我认为data-field不起作用。我尝试在线搜索以查看“ 字段”是否为保留字,但找不到任何内容。 无论如何,将data属性更改为其他任何内容(例如data-myfielddata-fieldID等)对我来说都是有效的。

答案 1 :(得分:0)

你试过使用$(this).attr(&#39; data-field&#39;)?我也想看看这里: http://api.jquery.com/attribute-equals-selector/这也可能是你的一些问题,取决于你甚至得到你的初始元素

答案 2 :(得分:0)

试试这个:

$("[data-provide=typeahead]").typeahead({
   source: function(query, process) {
     return $.get("/objects.json", {
     query: query
   }, function(data) {
      return process($.map(data, function(o) {
        return o[$(this).attr('data-field')]; //<-- Use attr()
      }));
     });
   }
});