【CSS】inputに値が入力されているか空文字かを判定する
やりたいこと
<input type="text">
や<textarea>
で文字が入力されているかどうかに応じてスタイルを変更したい場合があるが、それをjsを使わずにCSSのみで実現したい。
解決法
1. :placeholder-shownを使う
未入力の状態、すなわちプレースホルダーが表示されている状態なので擬似クラス:placeholder-shown
で判定できる。
ちなみにinput
タグのプレースホルダー値にはスペースを指定しておく必要がある。(空文字だとそもそも設定していないことになるため)
2. :invalidを使う
<input>
にrequired
を指定しておくことで未入力の場合にバリデーションエラーになるため、擬似クラス:invalid
で空文字判定できる。
3. valueの値を検証する
Reactでvalue
の値を制御している場合などは、input[value=""]
で直接未入力かを判定できる。