Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

456
Visualizações
Eliminar el color del borde previamente establecido

 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 enfoco en los campos de texto, el color del fondo y del 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 poner el foco en el campo de texto, el color del borde rojo no desaparece, sino que obtengo bordes verdes y rojos.

Quiero que sea solo verde. ¿Puede también explicar la razón de este comportamiento.

over 4 years ago · Santiago Trujillo
7 Respostas
Responde à pergunta

0

El problema es que los colores tienen el mismo nivel de importancia para css y, por lo tanto, el código no sabe a cuál priorizar. Entonces, para solucionar eso, debe hacer que el verde sea más importante en el código css.

Para hacer eso, cambie el código css de enfoque para que se vea así.

 #username:focus { background-color: yellow !important; border-color: green !important; } #password:focus { background-color: yellow !important; border-color: green !important; } #message { color: red; }

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Relatório

0

Simplemente puede revertir el color del borde en keyup y crear un nuevo error de clase para sobrescribir el color del borde a rojo

 function retainColor(ele){ ele.style.borderColor = "inherit"; document.getElementById("message").innerHTML = ""; } 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").classList.add("error"); return false; }else{ document.getElementById("username").classList.remove("error"); } if (password == "") { document.getElementById("message").innerHTML = "PASSWORD CANNOT BE EMPTY"; document.getElementById("password").classList.add("error"); return false; }else{ document.getElementById("password").classList.remove("error"); } }
 #username:focus { background-color: yellow; border-color: green; } #password:focus { background-color: yellow; border-color: green; } .error { border-color: red; } .error { border-color: red; } #message { color: red; }
 <form onsubmit=" return validate()"> LOGIN:- <br> <input id="username" type="text" onkeyup="retainColor(this)" name="username" placeholder="USERNAME"> <br> <input id="password" type="password" onkeyup="retainColor(this)" name="password" placeholder="PASSWORD"> <br> <input type="submit" value="SUBMIT"> <p id="message"> </form>

over 4 years ago · Santiago Trujillo Relatório

0

Solo agregue el atributo onfocus

JavaScript

 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; } } function myfunction(var id){ document.getElementById(id).style.borderColor = "green"; document.getElementById(id).style.background-color= "yellow"; }

html

 <form onsubmit=" return validate()"> LOGIN:- <br> <input id="username" type="text" onfocus="myFunction('username')" name="username" placeholder="USERNAME"> <br> <input id="password" type="password" onfocus="myFunction('password')" name="password" placeholder="PASSWORD"> <br> <input type="submit" value="SUBMIT"> <p id="message"> </form>
over 4 years ago · Santiago Trujillo Relatório

0

Está configurando los colores a través de JS, pero nunca los quita, por lo que esencialmente se configuran de forma permanente.

Una forma de detener este comportamiento es agregar también otra función que capture el evento OnClick de los campos de texto y "restablecer" o unset los colores cuando se haga clic en ellos.

Eche un vistazo aquí para obtener una idea sobre cómo comenzar a manejar el evento OnClick :

https://jsfiddle.net/warunamanjula/qy0hvmyq/1/

over 4 years ago · Santiago Trujillo Relatório

0

Porque cuando agrega color desde javascript, o cualquier propiedad de css, se agrega en línea, así que simplemente escriba focus border-color !important .

over 4 years ago · Santiago Trujillo Relatório

0

Esto sucede porque ha actualizado el estilo del elemento en lugar de la propiedad de la clase CSS . El estilo de elemento tiene el peso más alto para CSS . En su lugar, agregue una clase de error dinámicamente en caso de error y elimínela cuando el campo de formulario sea válido.

Según la documentación , el orden de estilo en orden decreciente será.

  1. Estilo en línea (dentro de un elemento HTML)
  2. Hojas de estilo externas e internas (en la sección de cabecera)
  3. predeterminado del navegador

Aquí hay un ejemplo de trabajo

 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").classList.add("invalidInput"); return false; } else { document.getElementById("username").classList.remove("invalidInput") } if (password == "") { document.getElementById("message").innerHTML = "PASSWORD CANNOT BE EMPTY"; document.getElementById("password").classList.add("invalidInput") return false; } else { document.getElementById("password").classList.remove("invalidInput") } }
 #username:focus { background-color: yellow; border-color: green; } #password:focus { background-color: yellow; border-color: green; } .invalidInput { border-color: red; } #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"></p> </form>

over 4 years ago · Santiago Trujillo Relatório

0

En lugar de agregar color desde javascript, puede usar requerido en el cuadro de entrada y: no válido en CSS. Revisa el fragmento

 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; } #username:invalid{ background-color: none; border-color: red; } #password:focus{ background-color: yellow; border-color: green; } #password:invalid{ background-color: none; border-color: red; } #message { color: red; }
 <form onsubmit=" return validate()"> LOGIN:- <br> <input id="username" type="text" name="username" placeholder="USERNAME" required> <br> <input id="password" type="password" name="password" placeholder="PASSWORD" required> <br> <input type="submit" value="SUBMIT"> <p id="message"> </form>

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda