function validate() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if (username == "") {
document.getElementById("message").innerHTML = "USERNAME CANNOT BE EMPTY";
document.getElementById("username").style.borderColor = "red";
return false;
}
if (password == "") {
document.getElementById("message").innerHTML = "PASSWORD CANNOT BE EMPTY";
document.getElementById("password").style.borderColor = "red";
return false;
}
}
#username:focus {
background-color: yellow;
border-color: green;
}
#password:focus {
background-color: yellow;
border-color: green;
}
#message {
color: red;
}
<form onsubmit=" return validate()">
LOGIN:-
<br>
<input id="username" type="text" name="username" placeholder="USERNAME">
<br>
<input id="password" type="password" name="password" placeholder="PASSWORD">
<br>
<input type="submit" value="SUBMIT">
<p id="message">
</form>
- Cuando me concentro en los campos de texto, el color de fondo y borde cambia a amarillo y verde respectivamente (a través de CSS).
- Si hago clic en enviar sin ingresar nada, el color del borde cambia a rojo (a través de JavaScript).
- Pero cuando vuelvo a enfocarme en el campo de texto, el color del borde rojo no desaparece, sino que obtengo bordes verdes y rojos.
Quiero que sea solo verde. ¿Puedes explicar también la razón de este comportamiento?
javascript
html
css
SuperAadi
fuente
fuente
El problema es que los colores tienen el mismo nivel de importancia que CSS y, por lo tanto, el código no sabe cuál priorizar. Entonces, para arreglar eso, debes hacer que el green sea más importante en el código CSS.
Para hacer eso, cambie el código CSS del foco para que se vea así.
¡Espero que esto ayude!
fuente
En lugar de agregar color desde javascript, puede usar requerido en el cuadro de entrada y: no válido en CSS. Revisa el fragmento
fuente
Simplemente puede revertir el color del borde en el teclado y crear una nueva clase
error
para sobrescribir el color del borde a rojofuente
!important
propiedad a un elemento en css hace que el estilo no sea actualizable en cualquier instancia.Está configurando los colores a través de JS, pero nunca los desactiva, por lo que esencialmente se configuran de forma permanente.
Una forma de detener este comportamiento es agregar también otra función que detecte el
OnClick
evento de los campos de texto y "restablecer" ounset
los colores cuando se hace clic dentro de ellos.Eche un vistazo aquí para obtener una idea sobre cómo comenzar a manejar el
OnClick
evento:https://jsfiddle.net/warunamanjula/qy0hvmyq/1/
fuente
Solo agrega
onfocus
atributoJavascript
HTML
fuente
Porque cuando agrega color desde javascript o cualquier propiedad de css, se agrega en línea, así que solo escriba el foco
border-color
!important
.fuente