セレクトボックスの初期値の色をテキストボックスのプレスフォルダーみたいに薄い色にしたい…
この記事では以下のようなセレクタの実装方法を解説します。
See the Pen selecter by 伊とう (@ito-the-typescripter) on CodePen.
CSSのみで実現できる方法もありますが、jQueryを使う本方法がおすすめです。
CSSのみだと使用するのに条件(required属性の設定が必須)があります。
もくじ
select(セレクトボックス)で初期値の色を変える方法
色を変える考え方は以下の通りです。
- 色を変えたい初期値は
value=""
とする - selectの初期の状態は、クラス名
.select-empty
を付ける - selectの値が変わるときをトリガーに、
value=""
以外なら.select-empty
を外す value=""
なら.select-empty
を付ける
ソースコード
次にソースコードです。
<div class="form__item">
<label for="selecter" class="form__ttl">セレクタ1</label><!-- /.form__ttl -->
<div class="select-wrap">
<select name="select" id="selecter" class="select-box select-empty">
<option value="">選択して下さい</option>
<option value="1">選択肢1</option>
<option value="2">選択肢2</option>
<option value="3">選択肢3</option>
</select><!-- /# -->
</div><!-- /.select-wrap -->
</div><!-- /.form__item -->
Contact Form7用には、以下に書き換え。
[select dropdownmenu-1 first_as_label"ここに好きな名前" "選択肢1" "選択肢2" "選択肢3"]
.select-box{
color: #333;
}
//初期値の色
.select-empty {
color: #b3b3b3;
}
$(function() {
const Target = $('.select-empty');
$(Target).on('change', function () {
if ($(this).val() !== "") { //ここが重要!!
$(this).removeClass('select-empty');
} else {
$(this).addClass('select-empty');
}
});
});
JavaScriptの4行目は特に注意して下さい。
このプログラムにすることで複数のセレクタがある場合でも正しく動作することができます。
まとめ
select(セレクト)を使うことは多くないかもしれませんが、お問い合わせフォームなどがある場合は使用確率が高いアイテムです。
私みたいに時間を浪費せず実装してもらえることを願っています!