diff --git a/docs/javascript.html b/docs/javascript.html index d489241157..53130bd16f 100644 --- a/docs/javascript.html +++ b/docs/javascript.html @@ -1353,7 +1353,7 @@ $('.myCarousel').carousel({
item
against which to test the query. Access the current query with this.query
. Return a boolean true
if query is a match.items
and has the scope of the typeahead instance. Reference the current query with this.query
.<input type="text" data-provide="typeahead">+
Initializes an input with a typahead.
diff --git a/docs/templates/pages/javascript.mustache b/docs/templates/pages/javascript.mustache index 9113c1776f..3c7a3b101f 100644 --- a/docs/templates/pages/javascript.mustache +++ b/docs/templates/pages/javascript.mustache @@ -1288,7 +1288,7 @@ $('.myCarousel').carousel({item
against which to test the query. Access the current query with this.query
. Return a boolean true
if query is a match.{{/i}}items
and has the scope of the typeahead instance. Reference the current query with this.query
.{{/i}}<input type="text" data-provide="typeahead">+
{{_i}}Initializes an input with a typahead.{{/i}}
\ No newline at end of file diff --git a/js/bootstrap-typeahead.js b/js/bootstrap-typeahead.js index b4d839c936..39331816e8 100644 --- a/js/bootstrap-typeahead.js +++ b/js/bootstrap-typeahead.js @@ -24,6 +24,8 @@ var Typeahead = function ( element, options ) { this.$element = $(element) this.options = $.extend({}, $.fn.typeahead.defaults, options) + this.matcher = this.options.matcher + this.sorter = this.options.sorter this.$menu = $(this.options.menu).appendTo('body') this.source = this.options.source this.shown = false @@ -34,11 +36,6 @@ constructor: Typeahead - , matcher: function (item, query) { - // ;_; http://jsperf.com/asdfdfasdfa - return ~item.toLowerCase().indexOf(query) - } - , select: function () { var val = this.$menu.find('.active').attr('data-value') this.$element.val(val) @@ -77,12 +74,12 @@ return this.shown ? this.hide() : this } - q = this.query.toLowerCase() - - items = jQuery.grep(this.source, function (item) { - if (that.matcher(item, q)) return item + items = $.grep(this.source, function (item) { + if (that.matcher(item)) return item }) + items = this.sorter(items) + if (!items.length) { return this.shown ? this.hide() : this } @@ -233,6 +230,12 @@ , items: 8 , menu: ' ' , item: '