2011-12-29 10 views
7

たとえば、新しく読み込まれたフォームには、背景色が緑色の<input type="text">が含まれています。ユーザーがフィールドに値を入力すると、代わりに青で色付けしたいと思います。空の場合(CSSを使用して)入力テキストフィールドに異なるスタイルを適用しますか?

純粋にCSSを使用してこれを実行できますか? input[type='text'][value]セレクタがあることを理解しています。しかし、これはユーザーがフォームのロードを完了した後にフォームに加えられた変更を反映していないので、フォームが値なしでロードされても、ユーザーの操作に関係なく変更されません。

答えて

11

あなたがテキストフィールドにrequired属性与えることができる:

<input type="text" required /> 

をして、CSSと妥当性をチェック:

input:invalid { background: green; } 

または反対(のための唯一の異なる古いブラウザ):

input:valid { background: blue; } 
+0

XML構文で書いているなら、その属性を 'required =" required "' ...に展開したいと思うでしょう。 – BoltClock

+0

なぜ、そのために必要な属性を強制したいのですか?これは良い解決策ではありません – vsync

+0

@vsyncフィールドが必須ではない場合、私は同意します。純粋にスタイリングのために、それは良い解決策ではありません。フィールドが必要な場合は、フィールドです。 – Rudie

1

JavaScriptを使用してのみ行うことができます。 Here's an exampleはjQueryを使用しています。

background-colorfocusにのみ変更する場合は、適切に:focus疑似セレクタを使用できます。 Here's an example of this

+1

まあ、私はスタイルシートに限定して外観を保つことを望んでいました。スクリプトとjsツールをありがとう。 – Alkenrinnstet

+1

':focus'はあなたが望むものの多くを行うまともな擬似セレクタですが、JSに大きく依存しています。 C'est la vie。 –

関連する問題