javascript - 如何停止 Bootstrap-3-Typeahead 下拉列表按排序顺序显示元素

标签 javascript jquery css twitter-bootstrap sorting

我正在使用Bootstrap-3-Typeahead

有没有办法避免下拉数据按自然顺序排序?

这将在 onFocus 事件的下拉列表中显示源中的所有数据。所以问题是它只会显示有限数量的具有自然排序顺序的元素,尽管我不希望它们如此。

如何避免它们被排序。

$('#device').tagsinput({
      typeahead: {
        source: ['Amsterdam', 'Washington', 'Sydney', 'Beijing', 'Cairo','Amstedrdam', 'Washidngton', 'Syddney', 'Bedijing', 'Caidro','Amzstderdam', 'Washidnzgton', 'Sydzdney', 'Beijzding', 'Caidzro'],
        autoSelect: false,
        showHintOnFocus : true,
        minLength : 0
      }
});

最佳答案

问题不在 Typeahead 插件中,而是在第二个 bootstrap-tagsinput 插件中。不幸的是,如果不编辑源代码就无法解决它。

看看这个 JSFiddle

如何阅读 bootstrap-tagsinput.js 的来源第 310 行:

sorter: function (texts) {
            return texts.sort();
          },

sorter 选项由 bootstrap-tagsinput 插件向 Typeahead 插件提供,并且由于该插件是在立即调用的函数表达式中执行,您无法覆盖 sorter 方法。 您应该 fork 该插件并更改排序器选项:

sorter: function (texts) {

          var sorter = typeahead.sorter || function (items) { return items.sort(); }
          return sorter(texts);
        },

enter image description here

所以你的插件初始化将是:

$('#ppp').tagsinput({
    typeahead: {
      source: ['Amsterdam', 'Washington', 'Sydney', 'Beijing', 'Cairo', 'Amstedrdam', 'Washidngton', 'Syddney', 'Bedijing', 'Caidro', 'Amzstderdam', 'Washidnzgton', 'Sydzdney', 'Beijzding', 'Caidzro'],
      sorter: function (texts) {
        return texts;
      }
    }
  });

...完成此操作后,它就会起作用

关于javascript - 如何停止 Bootstrap-3-Typeahead 下拉列表按排序顺序显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33287532/

相关文章:

javascript - 如何更改一条线但保留另一条线?

javascript - jquery 在同一函数中将两个 div 交叉淡入淡出在一起

javascript - php/Javascript/Ajax 加载内容不起作用

javascript - 如何固定箭头的位置不依赖于 Jquery 工具提示中的内容?

javascript - 悬停时弹出表单 - 如何使其成为页面上唯一的一个?

javascript - 如何将 javascript 变量放入 url 中?

javascript - 相关视频及部分内容详细信息和统计 - Youtube API V3

javascript - jQuery slider 在 Chrome 上不起作用(有间隔)

jquery - 尝试使用客户端 jquery 和 ajax 更新 Facebook Open Graph 元标记

css - 如何仅使用 CSS 创建响应式设计