5

我很难让 Twitter Bootstrap 的 Typeahead 正常工作。Typeahead 仅匹配输入的第一个字母。我在预输入框中的结果看起来像

n
n
n
N
N
n.

我的代码是

<%= text_field_tag :search, params[:search], "data-provide" => "typeahead", "data-source" => '["USA", "Canada","Mexico"]' %>

任何人都可以帮忙吗?

4

4 回答 4

7

检查 html 中为 data-source 属性输出的引号组合。下面的代码片段我遇到了同样的问题。

<input type="text" name="test" id="test" class="span2" data-provide="typeahead" 
data-items="4" data-source="['thisone','another','zzzz']">

更改为我在其他示例中看到的以下内容并没有解决它

data-source="["thisone","another","zzzz"]"

但是切换到属性值周围的单引号和可搜索元素的双引号修复了它。这行得通

data-source='["thisone","another","zzzz"]'
于 2013-01-23T10:54:48.917 回答
6

对于在使用源函数(即对您的服务器的 ajax 调用)时遇到此问题的任何人:

利用:

process(JSON.parse(data));

代替:

process(data);
于 2012-09-10T10:42:16.080 回答
2

我刚刚尝试了您的代码,它对我有用。但是,当我将引号更改为这样时,我遇到了您遇到的问题:

"['USA', 'Canada','Mexico']"

我遇到了类似的问题,它与您的问题略有不同,但它可能对其他人有所帮助。发生在我身上的是,我传递给 typeahead 的 JSON 被解释为字符数组。所以如果我通过了:

["USA", "Canada","Mexico"]

它会将其解释为 26 个字符的数组,因此预先输入给我的结果是单个字符。

就我而言,这是因为我正在进行 ajax 调用并且我没有将 dataType 设置为“json”。在你的情况下,这不是问题,但希望这能让你走向解决方案!

于 2012-09-02T20:49:21.843 回答
1
var data = "";
$.ajax({
        url: 'ajax/getdirverandpass.php',
        success: function (result) {
            data = JSON.parse(result);
        },
        async: false
});

 $("#nav-search-input").typeahead({source: data, updater: function (a) {
            $("#nav-search-input").focus();
            return a
}});

请使用这个 JSON.parse(result);

于 2015-11-24T06:12:32.357 回答