2013-04-30 3 views
1

Использование Twitter Boostrap TypeAhead вместе с MVC4 - есть ли способ изменить javascript для typeahead, чтобы выделить ЛЮБОЕ слово в окне поиска, в отличие от того, что именно находится в поле поиска, например. если я типа Outlook, он подчеркивает внешний вид в 4-х элементов в выпадающем:Twitter bootstrap выделить любое слово

Typeahead ss1

Однако, если я типа «доступ в Outlook» (который появляется в 4 пункта выше) - это возвращается в JSON из моего контроллера, однако, машинописный не отображается как «доступ в Outlook» не отображается в одной строке в записях:

Typeahead ss2

Я подозреваю, что ответ здесь (машинописный JS), но не уверен:

, highlighter: function (item) { 
    var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') 
    return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { 
    return '<strong>' + match + '</strong>' 
    }) 
} 

, render: function (items) { 
    var that = this 

    items = $(items).map(function (i, item) { 
    i = $(that.options.item).attr('data-value', item) 
    i.find('a').html(that.highlighter(item)) 
    return i[0] 
    }) 

    items.first().addClass('active') 
    this.$menu.html(items) 
    return this 
} 

Спасибо за любую помощь,

Все

ответ

1

Вы хотите переопределить matcher, чтобы вернуть все результаты, путем добавления этого в параметры машинописный:

matcher: function(item) { return true; } 

По умолчанию это делает базовое соответствие строк, чтобы отфильтровать их, но поскольку ваш контроллер уже возвращает элементы, которые вы хотите, все в порядке, чтобы показать их все.

Это приведет к отображению элементов, хотя маркер не выделяет ничего, поскольку «внешний вид доступа» не найден. Вы можете переопределить метод highlighter с помощью параметров аналогичным образом. Если контроллер возвращает результаты в определенном порядке, вы также можете переопределить метод sorter для возврата элементов как есть.

Смежные вопросы