mirror of
https://github.com/twbs/bootstrap.git
synced 2022-11-09 12:25:43 -05:00
typeahead should escape regexp special chars
This commit is contained in:
parent
bf59220b87
commit
83a7a69893
2 changed files with 18 additions and 1 deletions
3
js/bootstrap-typeahead.js
vendored
3
js/bootstrap-typeahead.js
vendored
|
@ -109,7 +109,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
, highlighter: function (item) {
|
, highlighter: function (item) {
|
||||||
return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
|
var query = this.query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
|
||||||
|
return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
|
||||||
return '<strong>' + match + '</strong>'
|
return '<strong>' + match + '</strong>'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
16
js/tests/unit/bootstrap-typeahead.js
vendored
16
js/tests/unit/bootstrap-typeahead.js
vendored
|
@ -52,6 +52,22 @@ $(function () {
|
||||||
typeahead.$menu.remove()
|
typeahead.$menu.remove()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("should not explode when regex chars are entered", function () {
|
||||||
|
var $input = $('<input />').typeahead({
|
||||||
|
source: ['aa', 'ab', 'ac', 'mdo*', 'fat+']
|
||||||
|
})
|
||||||
|
, typeahead = $input.data('typeahead')
|
||||||
|
|
||||||
|
$input.val('+')
|
||||||
|
typeahead.lookup()
|
||||||
|
|
||||||
|
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
||||||
|
equals(typeahead.$menu.find('li').length, 1, 'has 1 item in menu')
|
||||||
|
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
||||||
|
|
||||||
|
typeahead.$menu.remove()
|
||||||
|
})
|
||||||
|
|
||||||
test("should hide menu when query entered", function () {
|
test("should hide menu when query entered", function () {
|
||||||
stop()
|
stop()
|
||||||
var $input = $('<input />').typeahead({
|
var $input = $('<input />').typeahead({
|
||||||
|
|
Loading…
Reference in a new issue