2011-12-29 16 views
7

Por ejemplo, un formulario recién cargado contiene un <input type="text"> que tiene un color de fondo verde. Una vez que el usuario ingresa un valor en el campo, me gustaría que fuera de color azul.¿Aplicar diferentes estilos al campo de texto de entrada cuando está vacío (usando CSS)?

¿Es posible lograr esto simplemente usando CSS? Entiendo que existe el selector input[type='text'][value]. Sin embargo, esto no refleja ningún cambio en el formulario realizado por el usuario después de que se haya terminado de cargar, por lo que si el formulario se carga sin ningún valor, no se modificará independientemente de lo que haga el usuario.

Respuesta

11

Se podría dar el campo de texto del atributo required:

<input type="text" required /> 

y después comprobar la validez con CSS:

input:invalid { background: green; } 

o lo contrario (sólo diferentes para navegadores antiguos):

input:valid { background: blue; } 
+0

Si escribe en sintaxis XML, querrá expandir ese atributo a 'required =" required "' ... – BoltClock

+0

¿por qué querría forzar el atributo requerido solo para eso? esta no es una buena solución – vsync

+0

@vsync Si el campo no es obligatorio, acepto. Por puro estilo, no es una buena solución. Si el campo es obligatorio, lo es. – Rudie

1

Solo puede hacer esto usando JavaScript. Here's an example que usa jQuery.

Si desea cambiar el background-color en focus solamente, puede usar el pseudo-selector :focus. Here's an example of this.

+1

Ah, bueno, esperaba mantener la apariencia confinada a las hojas de estilo. Gracias por el guion y la herramienta js. – Alkenrinnstet

+1

Claro. ': focus' es un pseudo-selector decente que hará mucho de lo que quieras, pero ahora estamos acostumbrados a tanta personalización que depende en gran medida de JS. Así es la vida. –

Cuestiones relacionadas