¿Cómo aplico un estilo a un cuadro de entrada vacío? Si el usuario escribe algo en el campo de entrada, el estilo ya no debería aplicarse. ¿Es esto posible en CSS? Intenté esto:
input[value=""]
css
input
css-selectors
Sjoerd
fuente
fuente
En los navegadores modernos, puede usar
:placeholder-shown
para apuntar a la entrada vacía (que no debe confundirse con::placeholder
).Más información y compatibilidad con el navegador: https://css-tricks.com/almanac/selectors/p/placeholder-shown/
fuente
No hay un selector en CSS que haga esto. Los selectores de atributos coinciden con los valores de los atributos, no con los valores calculados.
Tendrías que usar JavaScript.
fuente
:empty
selector solo funciona en elementos vacíos, es decir, solo en elementos que tienen una etiqueta de apertura y cierre que está vacía en el medio, y elementos de etiqueta única que siempre se consideran vacíos, por ejemplo , por lo que no se puede usar en elementos de entrada exceptotextarea
La actualización del valor de un campo no actualiza su atributo de valor en el DOM, por eso su selector siempre coincide con un campo, incluso cuando en realidad no está vacío.
En su lugar, use la
invalid
pseudoclase para lograr lo que desea, así:fuente
input[value=""], input:not([value])
funciona con:
Pero el estilo no cambiará tan pronto como alguien comience a escribir (necesita JS para eso).
fuente
input[value=""], input:not([value])
.Si no se necesita apoyo navegadores antiguos, se puede usar una combinación de
required
,valid
yinvalid
.Lo bueno de usar este es el
valid
yinvalid
pseudo-elementos funcionan bien con los atributos de tipo de campos de entrada. Por ejemplo:Para referencia, JSFiddle aquí: http://jsfiddle.net/0sf6m46j/
fuente
en jQuery. Agregué una clase y diseñé con CSS.
fuente
Esto funcionó para mí:
Para el HTML, agregue el
required
atributo al elemento de entradaPara el CSS, use el
:invalid
selector para apuntar a la entrada vacíaNotas:
required
de w3Schools.com : "Cuando está presente, especifica que se debe completar un campo de entrada antes de enviar el formulario".fuente
Es posible que esta pregunta se haya hecho hace algún tiempo, pero como recientemente llegué a este tema en busca de la validación de formularios del lado del cliente, y como el
:placeholder-shown
soporte está mejorando, pensé que lo siguiente podría ayudar a otros.Utilizando la idea de Berend de usar esta pseudoclase CSS4, pude crear una validación de formulario solo activada una vez que el usuario terminó de llenarla.
Aquí hay una explicación y una explicación sobre CodePen: https://codepen.io/johanmouchet/pen/PKNxKQ
fuente
Si está contento de no admitir IE o pre-Chromium Edge (lo que podría estar bien si está usando esto para una mejora progresiva), puede usarlo
:placeholder-shown
como Berend ha dicho. Tenga en cuenta que para Chrome y Safari realmente necesita un marcador de posición no vacío para que esto funcione, aunque un espacio funciona.fuente
Me funcionó agregar un nombre de clase a la entrada y luego aplicar reglas CSS a eso:
fuente
Me preguntan las respuestas, tenemos un atributo claro para obtener cuadros de entrada vacíos, eche un vistazo a este código
ACTUALIZAR
Más por tener un excelente aspecto en la validación
fuente
:empty
se aplica solo a elementos que no tienen hijos. Las entradas no pueden tener nodos secundarios en absoluto, por lo que su entrada siempre estará con borde rojo. Ver también este comentariovalue
no cambia el número de nodos secundarios.<parent><child></child></parent>
). Simplemente tiene<input></input>
y mientras escribe lo que está cambiando no es un<value>
nodo dentro<input>
sino un atributo de valor :<input value='stuff you type'></input>
Me doy cuenta de que este es un hilo muy antiguo, pero las cosas han cambiado un poco desde entonces y me ayudó a encontrar la combinación correcta de cosas que necesitaba para solucionar mi problema. Así que pensé en compartir lo que hice.
El problema era que tenía que aplicar el mismo CSS para una entrada opcional si se llenaba, como lo había hecho para un llenado requerido. El css utilizó la clase psuedo: válida, que aplicó el css en la entrada opcional también cuando no se rellenó.
Así es como lo arreglé;
HTML
CSS
fuente