質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

1回答

5804閲覧

Laravelで、jQueryプラグインのselect2を使っていると、バリデーションエラー時に、フォームの赤枠が表示されない

coffee912

総合スコア12

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2020/07/18 03:54

前提・実現したいこと

セレクトボックスに、jQueryプラグインのselect2を使用しています。
バリデーションエラー時に、フォームを赤枠で囲うように、bootstrapのクラスを記述したのですが、
select2のclassが優先されるようで、反映されません。
どなたか解決方法ご存知でしたら、ご教示いただきたいです。

該当のソースコード

<div class="form-group"> <label for="js-multiple" style="display: block">募集対象地域</label> <select class="form-control @error(prefecture_id) is-invalid @enderror" id="js-multiple" name="prefecture_id[]" multiple="multiple"> <option value="" style="display: none;">選択してください</option> </select> @error('prefecture_id') <span class="invalid-feedback"> // ここは表示されています <strong>{{ $message }}</strong> </span> @enderror </div> </div>

jQuery

1// セレクト2 2 $('#js-multiple').select2({ 3 placeholder: "都道府県を選択", 4 width: "resolve" 5 });

試したこと

こちらの記事を参考に、
selectの親要素に @error has-error @enderrorを付けてみましたが、@errorは引数に名前が必要なので
エラーになりました。@error('prefecture_id') has-error @enderrorとした場合は、
変わらず、赤枠が表示されませんでした。

補足情報(FW/ツールのバージョンなど)

laravel: 7.19.1
jQuery: 3.3.1
select2: 4.0.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

<label for="js-multiple" style="display: block">募集対象地域</label>   <select class="form-control @error(prefecture_id) is-invalid @enderror" id="js-multiple" name="prefecture_id[]" multiple="multiple">   <option value="" style="display: none;">選択してください</option> </select>

<label for="js-multiple" style="display: block">募集対象地域</label> <div class="@error(prefecture_id) is-invalid @enderror">   <select class="form-control" id="js-multiple" name="prefecture_id[]" multiple="multiple">   <option value="" style="display: none;">選択してください</option> </select> </div>

selectのフォームはselect2の要素で隠れるので、
その記事にある通り別に要素を付ける方針でいいと思います。

重要なのはcssだと思います。

.is-invalid { .select2-container--focus .select2-selection, .select2-container--open .select2-selection { border-color: #e3342f; box-shadow: 0 0 0 0.2rem rgba(227, 52, 47, 0.25); } .select2-dropdown, .select2-selection { border-color: #e3342f; }

select2のクラスを指定して、あとはbootstrapの.is-invalidのスタイルを適用すればよろしいかと思います。
私もselect2とbootstrapを使用していますので、ご参考までにどうぞ。

投稿2020/09/03 11:24

tomoisi

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問