javascript - 添加 Bootstrap 5 搜索栏下拉菜单

标签 javascript jquery bootstrap-4 jquery-select2 bootstrap-5

我在这里有点新,但我想知道在添加带有搜索栏的下拉菜单时是否有人可以提供帮助。例如,我希望用户能够从某些食物列表中选择某些项目或搜索它们,但我无法在 Bootstrap 5 中找到执行此操作的教程。我阅读了文档,但它没有给我任何使用下拉列表实现搜索栏的具体方法。

我知道我可以使用 javascript 手动添加搜索栏的代码,并尝试将其与 bootstrap 下拉列表链接,但我对 JavaScript 不太熟悉,并且想知道 boostrap 是否有办法做到这一点,以便布局不会困惑枯萎。

我遵循了 Bootstrap 4 中的教程,但它本质上有我想要的想法,但由于 jQuery 已从 Bootstrap 5 中删除,它无法在我当前的网站中工作。这是代码: https://codeshare.io/0gQRwQ

$('.select2').select2();
.select2-container .select2-selection--single {
  height: 34px !important;
}

.select2-container--default .select2-selection--single {
  border: 1px solid #ccc !important;
  border-radius: 0px !important;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>

<div class="container">
  <div class="row">
    <form class="col-md-4">
      <label>Select</label>
      <select class="form-control select2">
        <option>Select</option>
        <option>Car</option>
        <option>Bike</option>
        <option>Scooter</option>
        <option>Cycle</option>
        <option>Horse</option>
      </select>
    </form>
  </div>
</div>

如有任何建议,我们将不胜感激。谢谢

最佳答案

正如@Alimo所说,您的示例基于 Select2库及其严重依赖 jQuery,据我所知,没有计划删除它。

Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and pagination of results.

作为替代方案,您可以使用 tom-select.js

Tom Select was forked from selectize.js with four main objectives: modernizing the code base, decoupling from jQuery, expanding functionality, and addressing issue backlogs.

这是主要示例:

new TomSelect("#select-tags", {
  plugins: ['remove_button'],
  create: true,
  onItemAdd: function() {
    this.setTextboxValue('');
    this.refreshOptions();
  },
  render: {
    option: function(data, escape) {
      return '<div class="d-flex"><span>' + escape(data.value) + '</span><span class="ms-auto text-muted">' + escape(data.date) + '</span></div>';
    },
    item: function(data, escape) {
      return '<div>' + escape(data.value) + '</div>';
    }
  }
});
<link href="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="25474a4a51565157445565100b140b16" rel="noreferrer noopener nofollow">[email protected]</a>/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

<link href="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0a7e656727796f666f697e4a38243a243a277869243e" rel="noreferrer noopener nofollow">[email protected]</a>/dist/css/tom-select.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="74001b195907111811170034465a445a445906175a40" rel="noreferrer noopener nofollow">[email protected]</a>/dist/js/tom-select.complete.min.js"></script>

<div class="container">
  <div class="row">
    <div class="p-4">
      <select id="select-tags" multiple placeholder="Best movies and TV shows">
        <optgroup label="TV Shows">
          <option value="Blue Bloods" data-date="2010-2021">Blue Bloods (2010-2021)</option>
          <option value="Magnum P.I." data-date="1980-1988" selected>Magnum P.I. (1980-1988)</option>
        </optgroup>
        <optgroup label="Movies">
          <option value="An Innocent Man" data-date="1989">An Innocent Man (1989)</option>
          <option value="In & Out" data-date="1997">In & Out (1997)</option>
          <option value="Lassiter" data-date="1984">Lassiter (1984)</option>
          <option value="Mr. Baseball" data-date="1992">Mr. Baseball (1992)</option>
          <option value="Quigley Down Under" data-date="1990">Quigley Down Under (1990)</option>
          <option value="Three Men and a Baby" data-date="1987">Three Men and a Baby (1987)</option>
        </optgroup>
      </select>
    </div>
  </div>
</div>

这里是更多 examples如果你需要的话。

关于javascript - 添加 Bootstrap 5 搜索栏下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69530889/

相关文章:

javascript - 使用 d3.js 仅显示 csv 文件中的 20 行数据

javascript - 继承方法调用触发 Typescript 编译器错误

javascript - 未捕获的 TypeError : $. get(...).then 不是函数

每行中的PHP bootstrap 4模态删除按钮

javascript - 导航回 Angular 应用程序时如何使后退按钮起作用?

javascript - 创建 JavaScript 自定义事件

javascript - jQuery slideToggle() 不显示 :before element

jquery - 如何在jquery中创建和访问数组

html - 我想在 html 中使用颜色设置半背景

html - Bootstrap 4 .sticky-top 对 thead 的更改