2011-12-29 9 views
7

Na przykład świeżo załadowany formularz zawiera <input type="text">, który ma zielony kolor tła. Gdy użytkownik wprowadzi wartość do pola, chciałbym, aby zamiast tego był w kolorze niebieskim.Zastosuj różne style do wprowadzania pola tekstowego, gdy puste (przy użyciu CSS)?

Czy można to zrobić za pomocą CSS? Rozumiem, że istnieje selektor input[type='text'][value]. Nie oznacza to jednak żadnych zmian w formularzu wprowadzonym przez użytkownika po jego załadowaniu, więc jeśli formularz załadowano bez wartości, pozostanie on niezmieniony niezależnie od tego, co robi użytkownik.

Odpowiedz

11

Można dać textField atrybut required:

<input type="text" required /> 

a następnie sprawdzić ważność z CSS:

input:invalid { background: green; } 

lub odwrotnie (różne tylko dla starych przeglądarek):

input:valid { background: blue; } 
+0

Jeśli piszesz w składni XML, będziesz chciał rozszerzyć ten atrybut do 'required =" wymagany "' ... – BoltClock

+0

dlaczego chciałbym wymusić wymagany atrybut właśnie w tym celu? to nie jest dobre rozwiązanie. – vsync

+0

@vsync Jeśli pole nie jest wymagane, zgadzam się. Do czystego stylizowania nie jest to dobre rozwiązanie. Jeśli pole jest wymagane, jest. – Rudie

1

Można to zrobić tylko za pomocą JavaScript. Here's an example, który używa jQuery.

Jeśli chcesz zmienić tylko background-color na focus, możesz użyć trafnie nazwanego pseudo-selektora :focus. Here's an example of this.

+1

No cóż, miałem nadzieję, że pojawię się tylko w arkuszach stylów. Dziękuję za skrypt i narzędzie js. – Alkenrinnstet

+1

Pewnie. ': focus' to przyzwoity pseudo-selektor, który zrobi wiele z tego, czego chcesz, ale jesteśmy przyzwyczajeni do tak dużej personalizacji, która polega w dużym stopniu na JS. C'est la vie. –

Powiązane problemy