グループごとに select2 の選択を制限する方法を思いついた人はいますか?
そのグループから何かが選択されると、同じグループから選択を自動的に削除したいと考えています(事実上、グループごとに1つの選択に制限されています)
私は何かに取り組んでおり、終了する前に誰も良い解決策を投稿しない場合は、ここに投稿します.
グループごとに select2 の選択を制限する方法を思いついた人はいますか?
そのグループから何かが選択されると、同じグループから選択を自動的に削除したいと考えています(事実上、グループごとに1つの選択に制限されています)
私は何かに取り組んでおり、終了する前に誰も良い解決策を投稿しない場合は、ここに投稿します.
Select2 で選択が行われないようにすることができるため、「グループ」の定義方法によってはこれを行うことができます。「グループ」が<optgroup>
標準の である<select>
場合、他のオプションが選択されているかどうかを確認し、それに<optgroup>
基づいて進行中の選択を防止するだけです。
Select2 はselect2:selecting
、選択が行われているときにイベントを発行します。このイベントは、それを呼び出すことで防ぐことができますpreventDefault()
。
$("#mySelect").on("select2:selecting", function (evt) {
var data = evt.params.data;
var $element = $(data.element);
// check if any options in the group are selected
if ($element.parent("optgroup").find(":selected").length) {
evt.preventDefault();
}
});
Kevin Brown の回答は、私が探していたものに非常に近いものでしたが、実際には、同じ optgroup から選択されたオプションを自動的に選択解除したかったのです。私はそれを次のように動作させました:
$("#my-select").on("select2-selecting", function (event) {
$(event.object.element).parent("optgroup").find(":selected").attr('selected', false);
$("#my-select").trigger('change');
});
注:Select2 3.5.2を使用しています