1

Twitter Boostrap TypeAhead を MVC4 と共に使用する - 検索ボックスにあるものとは対照的に、検索ボックス内の任意の単語を強調表示するために、先行入力用の JavaScript を変更する方法はありますか? Outlook と入力すると、ドロップダウンの 4 つの項目で Outlook が強調表示されます。

先行入力 ss1

ただし、「outlook access」(上記の 4 番目の項目に表示されます) と入力すると、コントローラーから JSON で返されますが、「Outlook access」はエントリに 1 つの文字列として表示されないため、TypeAhead には表示されません。 :

先行入力 ss2

答えはここ(typeahead 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
}

助けてくれてありがとう、

マーク

4

1 に答える 1

1

matcherこれを先行入力オプションに追加して、すべての結果を返すようにオーバーライドします。

matcher: function(item) { return true; }

デフォルトでは、それらをフィルタリングするために基本的な文字列の一致が行われますが、コントローラーはすでに必要なアイテムを返しているため、それらをすべて表示しても問題ありません。

これにより、アイテムが表示されますが、「outlook access」が見つからないため、蛍光ペンは何も強調表示しません。highlighter同様の方法で、オプションを介してメソッドをオーバーライドできます。コントローラーが特定の順序で結果を返す場合、メソッドをオーバーライドしsorterて項目をそのまま返すこともできます。

于 2013-04-30T14:34:44.367 に答える