3

グループごとに select2 の選択を制限する方法を思いついた人はいますか?

そのグループから何かが選択されると、同じグループから選択を自動的に削除したいと考えています(事実上、グループごとに1つの選択に制限されています)

私は何かに取り組んでおり、終了する前に誰も良い解決策を投稿しない場合は、ここに投稿します.

4

2 に答える 2

4

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();
  }
});
于 2015-05-14T22:51:35.220 に答える
1

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を使用しています

于 2015-05-15T15:24:24.173 に答える