0

タグ付けの目的でSelect2を使用します。チャームのように機能しますが、追加の要件があります。マッチャーは、アイテムのテキストだけでなく、それ以上に一致する必要があります。

説明させてください。このmatcher関数は、2つのパラメーターとを取りtermますtext。これにより、指定されたタグと入力されたテキストを比較できます。tagsしかし、(関数を介して)各タグに追加のデータを定義すると、マッチャーでそのデータにアクセスできなくなります。

コード例:

// #myinput is a hidden input field
$('#myinput').select2({
  matcher: function(term, text) {
      return text.toUpperCase().indexOf(term.toUpperCase()) >= 0;
  },
  tags: function() {
      var tags = [];
      $('#myselect').find('option').each(function(index, option) {
          option = $(option);
          tags.push({
              id: option.val(),
              text: option.text(),
              category: option.data('category')
          });
      });
      return tags;
  }
})

各タグの必須プロパティidとプロパティを設定します。textさらに、という名前の文字列がありますcategory。テキストだけでなく、テキストとカテゴリと照合したい。

それは可能ですか?

4

2 に答える 2

1

これは現在 (3.3 の時点で) 不可能です。select2 の github issue tracker で jsfiddle を使用して拡張要求を提出してください。

于 2013-02-11T00:53:10.327 に答える
0

3.4.2 を使用していますが、まだ実装されていません。しかし、本当に簡単なハックがあります。

マッチャーが2つの引数で呼び出される select2.(min).js 行を見つけます (" e.matcher( ");

私のバージョンでは、次のようなものがあります。

{var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c) 

3 番目の引数に「this」を追加します

e.matcher(f、c、これ);

その結果、タグオブジェクト全体が渡されます:)

于 2014-07-03T09:31:39.160 に答える