私はSelect2(バージョン3.4.0)を使用してタグリストに値を設定しています。タグはajaxコールを介して既存のものと照合され、新しいタグの作成を可能にするためにcreateSearchChoice
を使用しています。コードは、これまでの作品、そしてこのようなものになります。ノートcreateSearchChoice
で追加(new)
除き、SelectS2 with createSearchChoiceは、マッチ、バグ、または何かが欠けていても、キーボード入力用に新しく作成された選択肢を使用しますか?
$(mytags).select2({
multiple: true,
placeholder: "Please enter tags",
tokenSeparators: [ "," ],
ajax: {
multiple: true,
url: myurl,
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return data;
}
},
createSearchChoice: function(term) {
return {
id: term,
text: term + ' (new)'
};
},
});
すべてのかなり標準を。私はこれが既存のタグではないことを知る必要があります。
「new-tag」と入力すると、リストの一番上に「new-tag(new)」というタグが表示され、選択すると「new-tag - タグ(新規) "、期待どおり。タグがすでに存在する場合、Select2は一致を検出し、「(新しい)」選択肢は作成されません。リターンを押すか、マッチをクリックすると、期待どおりに動作します。
この問題は、一致するものがあるときにコンマ(自分の単一のtokenSeparators
エントリ)を入力すると表示されます。 Select2はそのトークンを閉じ、リストにタグを追加しますが、 "(新しい)"ラベルが付加されています。つまり、それがない場合でもcreateSeachChoice
の戻り値を使用します。
これはSelect2のバグですか、間違って使用していますか(代わりに何をする必要がありますか)?
私のケースでは、結果は十分速くなければならず、ほとんどの場合は十分である限り、十分であるはずです。 –
すばらしい答えJon。私はあなたのフィドルであなたが "バー"を入力し、あなたのキーボードで入力したら、 "foo"が選択され、希望の振る舞いではないと思うことに気がつきました。 – Marklar
この回答が書かれているので、これについてGitHubに問題が追加されました:https://github.com/ivaynberg/select2/issues/794。私は作業中の提案の基本的な実装をしており、すぐにプル要求を提出する予定です(私は上記のリンクでコメントします)。 –