混合 Typeahead.js 和 Bootstrap 3

Posted

技术标签:

【中文标题】混合 Typeahead.js 和 Bootstrap 3【英文标题】:Mixing Typeahead.js and Bootstrap 3 【发布时间】:2016-08-20 05:36:04 【问题描述】:

我有一个使用 Bootstrap 3 和 Typeahead 的应用程序。出于某种原因,我一添加Typeahead.js,样式就会出现格式错误,您可以使用this JSFiddle 查看。以下 html 看起来很棒:

<div class="container" style="padding:3rem;">
<form class="form-horizontal">
  <div class="form-group">
    <div class="input-group">
      <input type="search" class="form-control" id="myQuery">
      <div class="input-group-btn">
        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span id="searchIndexButton">Item 1</span> <span class="caret"></span></button>
        <ul class="dropdown-menu dropdown-menu-right">
          <li>Item 1</li>
          <li>Item 2</li>
        </ul>
      </div>
    </div>                            
  </div>
</form>                    
</div>

如下所示,一旦我使用 Typeahead 初始化它,它看起来很糟糕。

$(function() 
  var data = [
     id:1, name:'Tiger' ,
     id:2, name:'Bear' 
  ];

  var bh = new Bloodhound(
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    local: data
  );

  $('#myQuery').typeahead(null, 
    minLength: 1,
    name: 'suggestions',
    source: bh,
    display: 'name'
  );
);

【问题讨论】:

如果添加.twitter-typeahead width:100%;边距顶部:4px; 你会得到更接近原作的东西。 @JonSG - 不幸的是,这对 m 不起作用。 【参考方案1】:

如果您包含this CSS code for using typeahead.js with Bootstrap 3,HTML 将按预期显示而无需修改:

JSFiddle:https://jsfiddle.net/2j94perk/

Twitter 的 typeahead 不能直接与 Bootstrap 3 一起使用。typeahead.js 使用的下拉菜单的 DOM 结构与 Bootstrap 下拉菜单的 DOM 结构不同。您需要加载一些额外的 CSS 以使 typeahead.js 下拉菜单适合默认的 Bootstrap 主题。您可以在此处下载基本 CSS,或使用 LESS 文件将其集成到您的项目中。

在您的 HTML 中包含 Bootstrap 的 CSS 之后的 CSS 文件:

<link href="bootstrap-3.1.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="typeaheadjs.css" rel="stylesheet">

来源:https://github.com/bassjobsen/typeahead.js-bootstrap-css

【讨论】:

【参考方案2】:

如果您检查带有 typeahead 初始化的 DOM,您应该注意到脚本用 &lt;span&gt; 包装了 &lt;input&gt;。 Bootstrap 期望某种结构在 typeahead 运行后不再相同。

【讨论】:

你尝试了什么?我只是指出引导样式不再正确应用的原因。

以上是关于混合 Typeahead.js 和 Bootstrap 3的主要内容,如果未能解决你的问题,请参考以下文章

Typeahead.js 和 Bloodhound.js 与 C# WebForms WebMethod 的集成

Typeahead.js 干扰 Bootstrap 输入组

typeahead 表单,为用户提供提示或数据。自动补全typeahead.js

Typeahead.js - 在多个属性值中搜索

使用 Cucumber 和 Capybara-Webkit 在 Rails 4 上进行 typeahead.js 测试失败

如何在大型数据库中使用 typeahead.js