web-dev-qa-db-ja.com

select2は無効化もクリアもしません

私はプライマリセレクトに従属しているセカンダリセレクトを持っています(ストアを選択してから、部門を選択します-国を選択するのと同じで、次に州を選択します)。

Select2の( 'enable'、false)および( 'data'、null)メソッドを機能させることは絶対にできません。

<select id="stores">
  <option value="foo">foo</option>
</select>
<select id="depts">
  <option value="bar">bar</option>
</select>

// ...some logic that selects a store, then fetches that store's depts ...

$('#depts').select2('enable',false);// does not disable control
$('#depts').select2('data',null); // does not clear control

だから私はこれを強いられます:

$('select#depts').empty(); // clears HTML element
$('#depts').select2(); // re-enhances select w/ select2
$('#depts').select2('disable',true); // disables 

Jsfiddleで動作するため、例を投稿してヘルプを要求することもできません。私はただ…困惑しています。

12
DaveC426913
// to disable
$('#statusSelect').select2('disable');

//to enable
$('#statusSelect').select2('enable');
29
prashant

これはすべてのブラウザで動作します:

$('#statusSelect').select2('destroy');
$('#statusSelect').prop('disabled', true);
$('#statusSelect').select2();

これにより、select2入力が無効になります。

単純に再度有効にするには:

$('#statusSelect').select2('destroy');
$('#statusSelect').prop('disabled', false);
$('#statusSelect').select2();

欠点は、select2が破棄されて再適用されたときに、選択ボックスの外観が一瞬変化することです。

また、「readonly」と「disabled」は、select2の古いバージョンではサポートされていません。

11
imperium2335

おそらくselect2バグ 1104 が発生しています。残念ながら、それはIE8-10でもまだ問題ですが、select2のせいではありません。問題は、IEは、要素が無効になっているときにpropertychangeイベントをトリガーせず、他のブラウザーが使用するMutationObserver機能も実装しないことです。幸い、私が使用する小さなjQueryプラグインがあります。要素が無効になったときにpropertychangeイベントを発生させることができると書いてあります here を見つけることができます。

$('#originalSelect').fireOnDisable().select2();
$('#originalSelect').prop('disabled', true);

iE8-10で動作するはずです。 IE6-7をサポートする必要がある場合は、自分で解決してください。

5
cmcnulty

Select2ドロップダウンボックスに一意のIDがある場合、そのIDを使用して、

$("#id-select2").attr("disabled", true);
2
proprius

IEの場合、有効/無効にした後、select2を再初期化する必要があります

// change action disable
$('.custom-select').select2()
.on("change", function(e) {
   $('.custom-select').prop("disabled", true).select2(); //call select2
})

// disable alternative
 $('.custom-select').prop("disabled", true).select2(); //call select2
1
Ravan nagalla

このコードは、すべてのブラウザー(select2 v4.0.4)で動作するはずです。

無効にする場合:

$('select').prop('disabled', true).trigger('change');

有効にするには:

$('select').prop('disabled', false).trigger('change');
1
Mario62RUS

あなたはこれを必要としませんか?

$( '#depts')。prop( 'disabled'、false);

と同じこの質問

0
Liam Sorsby

誰かが.netサーバーコードでそれをやろうとしている場合:

this.mySelect2elementID.Attributes.Add("disabled", "true");
0
Jorge