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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

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

Q&A

解決済

1回答

1390閲覧

チェックに引っかかった場合、selectboxの枠線の色を変えて、フォーカスが外れたら元の色に戻したい

pecchan

総合スコア592

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

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

0グッド

0クリップ

投稿2021/01/27 23:45

編集2021/01/28 00:00

前提・実現したいこと

jQueryで入力チェックを実装しているところです。
チェックに引っかかった場合、どの入力項目がNGだったか分かるように、項目のボーダー色を変えたいです。
※対象はselectboxになります。

発生している問題

色々試しましたが意図した通りになりません。

試したこと

元々CSSでfocusするとボーダー色を変えるようにしてたので、チェックに引っかかったタイミングで、選択状態にしてみました。

選択状態にはなりますが、色は変わりませんでした。

javascript

1$("hoge").val(0);

そこで選択状態にするのはやめて、チェックに引っかかったら、色を変えてみました。

javascript

1$(".hoge").css("box-shadow","0 0 10px 0 #ff9900");

一見うまくいったように思えたのですが、この後selectboxに枠色がずっと付いたままになってしまいます。
※当然といえばそうなのですが

フォーカスが外れた時に枠色を戻すscriptを追加したら解消するでしょうが、何だか違うような気がしてます。もっとシンプルな方法はないかと悩んでいます。

整理するとやりたいイメージは、以下の通りです。

枠色を変えたいのは
・(入力時に)フォーカスが当たった時
・チェック時に引っかかった時

枠色を元の色に戻したいのは
・フォーカスが外れた時

先輩方アドバイスいただけないでしょうか?
宜しくお願い致します。

コードペン
リンク内容

該当のソースコード

html

1<script src="https://code.jquery.com/jquery-3.3.1.js"></script> 2 3<select class="minimal"> 4 <option>apple</option> 5 <option>grape</option> 6 <option>banana</option> 7</select> 8 9<button>登録</button>

css

1select { 2 /* styling */ 3 background-color: white; 4 border: thin solid #ddd; 5 border-radius: 4px; 6 display: inline-block; 7 font: inherit; 8 line-height: 1.5em; 9 padding: 0.5em 3.5em 0.5em 1em; 10 width: 100%; /*親要素いっぱい広げる*/ 11 12} 13 14/* arrows */ 15select.minimal { 16 background-image: 17 linear-gradient(45deg, transparent 50%, gray 50%), 18 linear-gradient(135deg, gray 50%, transparent 50%), 19 linear-gradient(to right, #ccc, #ccc); 20 background-position: 21 calc(100% - 20px) calc(1em + 2px), 22 calc(100% - 15px) calc(1em + 2px), 23 calc(100% - 2.5em) 0.5em; 24 background-size: 25 5px 5px, 26 5px 5px, 27 1px 1.5em; 28 background-repeat: no-repeat; 29} 30 31select.minimal:focus { 32 background-image: 33 linear-gradient(45deg, green 50%, transparent 50%), 34 linear-gradient(135deg, transparent 50%, green 50%), 35 linear-gradient(to right, #ccc, #ccc); 36 background-position: 37 calc(100% - 15px) 1em, 38 calc(100% - 20px) 1em, 39 calc(100% - 2.5em) 0.5em; 40 background-size: 41 5px 5px, 42 5px 5px, 43 1px 1.5em; 44 background-repeat: no-repeat; 45 box-shadow: 0 0 10px 0 rgba(255,153,0,1); 46 outline: 0; 47} 48 49 50select:-moz-focusring { 51 color: transparent; 52 text-shadow: 0 0 0 #000; 53}

javascript

1$('button').click(function(){ 2 $(".minimal").css("box-shadow","0 0 10px 0 #ff9900"); 3})

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

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

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

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

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

m.ts10806

2021/01/27 23:55

「フォーカス外れたら」のイベント捕捉はされてないようですが
pecchan

2021/01/28 00:03

はい、それを追加せず出来ないかなと思ったのです・・・ 理由はすでにイメージした動作がscssで実現できているからです。 イメージした動作とは、フォーカス時、フォーカス外れた時のことです。 具体的な方法は分からないですがjQueryからこれらを呼ぶ?連動できないかなと思ったのですが。
yambejp

2021/01/28 00:04

チェックに引っかかったタイミング が何かわからないので検証できません
pecchan

2021/01/28 00:09

コードペンを記載してました。
guest

回答1

0

ベストアンサー

チェックに引っかかった場合、どの入力項目がNGだったか分かるように、項目のボーダー色を変えたいです。
$(".minimal").css("box-shadow","0 0 10px 0 #ff9900");

要素の状況によって見た目を変えたいときは、クラスの付け外しで対応するのが定石です。

チェックに引っかかったとき:

javascript

1$(".minimal").addClass("oneshot-invalid");

blurイベント時:

javascript

1$(".minimal").removeClass("oneshot-invalid"); 2// oneshot-invalidが付いてないときは何も起きないので、 3// 無条件でこれを実行して構わない。

スタイル:

css

1.oneshot-invalid { 2 box-shadow: 0 0 10px 0 #ff9900; 3}

投稿2021/01/28 00:03

int32_t

総合スコア21695

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

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

pecchan

2021/01/28 00:11

>要素の状況によって見た目を変えたいときは、クラスの付け外しで対応するのが定石です。 素人一人なのでこういった「定石」は、本当に助かります!! 有難う御座います!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問