JavaScriptで入力フィールドの空判定
前提
- CSSを使用して、入力フィールドが空かどうかを判定したい。
- 訪問しているページのHTML構造を直接変更できない。
方法
- JavaScriptで入力フィールドの値を取得
document.querySelector()
を使用して、入力フィールドの要素を取得します。value
プロパティを使用して、入力フィールドの値を取得します。
- JavaScriptで値の有無を判定
value
プロパティが空文字("")
かどうかをチェックします。
- CSSで条件に応じたスタイルを適用
- JavaScriptの判定結果に基づいて、CSSクラスを追加または削除します。
- CSSクラスに、空かどうかを示すスタイルを定義します。
コード例
const inputField = document.querySelector('#your-input-id'); // 実際の入力フィールドのIDに置き換えてください
inputField.addEventListener('input', () => {
if (inputField.value.trim() === '') {
inputField.classList.add('is-empty');
} else {
inputField.classList.remove('is-empty');
}
});
CSS
.is-empty {
/* 空の場合のスタイル */
border: 1px solid red;
background-color: #ffdddd;
}
解説
inputField.classList.remove('is-empty')
は、入力フィールドが空でない場合にis-empty
クラスを削除します。inputField.value.trim() === ''
は、入力フィールドの値が空文字か、または空白文字のみかどうかをチェックします。inputField.addEventListener('input', () => { ... })
は、入力フィールドの値が変更されたときに、指定した関数を呼び出します。document.querySelector('#your-input-id')
は、IDがyour-input-id
の入力フィールド要素を取得します。
const inputField = document.querySelector('#your-input-id'); // 実際の入力フィールドのIDに置き換えてください
inputField.addEventListener('input', () => {
if (inputField.value.trim() === '') {
inputField.classList.add('is-empty');
} else {
inputField.classList.remove('is-empty');
}
});
.is-empty {
/* 空の場合のスタイル */
border: 1px solid red;
background-color: #ffdddd;
}
- JavaScriptで入力フィールドの要素を取得
- 入力フィールドの値が変更されたときにイベントリスナーを登録
- JavaScriptで値の有無を判定
value
プロパティを使用して入力フィールドの値を取得し、trim()
メソッドで先頭と末尾の空白文字を除去します。- 値が空文字(
"")
かどうかをチェックします。
- CSSで条件に応じたスタイルを適用
is-empty
クラスには、空の場合のスタイルが定義されています。
代替的な方法: CSSの::placeholder
擬似要素を使用
input::placeholder {
content: "入力してください"; /* または、空の文字列 "" */
}
input:not(:placeholder-shown) {
/* 入力がある場合のスタイル */
border: 1px solid green;
}
- ::placeholder擬似要素を使用
input::placeholder
は、入力フィールドのプレースホルダー要素を対象とします。content
プロパティを使用して、プレースホルダーのテキストを設定します。
- :not(:placeholder-shown)擬似クラスを使用
:not(:placeholder-shown)
は、プレースホルダーが非表示になっている入力フィールドを対象とします。- これは、入力フィールドにテキストが入力されていることを示します。
- 条件に応じたスタイルを適用
この方法では、プレースホルダーの表示状態を監視することで、入力フィールドが空かどうかを判定します。
代替的な方法: JavaScriptで直接値をチェック
const inputField = document.querySelector('#your-input-id');
inputField.addEventListener('input', () => {
if (inputField.value.trim() === '') {
inputField.classList.add('is-empty');
} else {
inputField.classList.remove('is-empty');
}
});
.is-empty {
/* 空の場合のスタイル */
border: 1px solid red;
background-color: #ffdddd;
}
css input is-empty