ドキュメントがひどいか、何かが欠けています。フォームの検証のために、エラークラスをselect2ボックスに追加しようとしています。それは1pxの赤い境界線です。
ドキュメントでcontainerCssClass
メソッドを見つけましたが、適用方法がわかりません。
私は運のない次を試しました:
$("#myBox").select2().containerCssClass('error');
jQueryはJSONオブジェクトを使用して初期化するため、これも同様に推測します。\
_$("#myBox").select2({ containerCssClass : "error" });
_
クラスを追加/削除したい場合は、初期化した後にこれを行うことができます
_$($("#myBox").select2("container")).addClass("error");
$($("#myBox").select2("container")).removeClass("error");
_
上記の関数は、select2のメインコンテナーのDOMノードを取得します。例:$("#myBox").select2("container")
重要
SELECTを直接編集することはありませんが、select2はスタイリング可能なSELECTをシミュレートするために他のHTMLを生成するため、containerメソッドを使用してコンテナを取得する必要があります。
すでに初期化されたselect2要素について、@ Nielsソリューションを試しましたが、エラーが発生しました:Uncaught TypeError: Cannot read property 'apply' of undefined
ソースに行って、これは代わりに機能しています:
$($('#myBox').data('select2').$container).addClass('error')
$($('#myBox').data('select2').$container).removeClass('error')
Select2 v4.0.3 fullを使用する
ドキュメント によれば、containerCssClass
はコンストラクタープロパティにすぎません。おそらくできることは、エラーが発生したときに再初期化することです。
$("#myBox").select2({
containerCssClass: "error"
});
コメントからのメモ:Uncaught Error:No select2/compat/containerCss(…)を取得した場合、代わりにselect2.full.jsバージョンを含める必要があります基本的なものの
ここからグーグルをさまよう人にとって、プロパティcontainerCssClass
は、実際にはコンテナ要素にクラスを追加するのではなく、選択要素に追加するため、紛らわしい名前を持っています。これは、生成されたhtmlを調べるときに確認できます。
私はニースの小さなハックに遭遇しました here これにより、CSSクラスをtheme
プロパティに追加することでコンテナーに適用できます。
$('#my-select').select2({
theme: "bootstrap myCssClass",
});
テーマオプションを使用します。
$(".select").select2({
placeholder: "",
allowClear: false,
theme: "custom-option-select"
});
最も簡単な方法:
次のような親クラスを作成します
<div class="select-error">
<select id="select2" name="select2" data-required class="form-control">
<option value="" selected>No selected</option>
<option value="1">First</option>
<option value="2">Second</option>
</select>
</div>
jqueryまたはphpでそれを検証するときは、次のように.select-errorクラスにスタイルまたはcssを追加するだけです
style="border:1px solid red; border-radius: 4px"
jQueryの例:
$('[data-required]').each(function() {
if (!$(this).val()) {
if ($(this).data('select2')) {
$('.select-error').css({
'border': '1px solid red',
'border-radius': '4px'
});
}
});
DropdownCssClass opitonを使用できます
$("#myBox").select2({
containerCssClass: "error"
});