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>
- Quando me concentro nos campos de texto, a cor do plano de fundo e da borda muda para amarelo e verde respectivamente (através de css).
- Se eu clicar em enviar sem inserir nada, a cor da borda muda para vermelho (através de javascript).
- Mas quando troco o foco no campo de texto novamente, a cor da borda vermelha não desaparece; em vez disso, recebo bordas verde e vermelha.
Eu quero que seja apenas verde. Você também pode explicar o motivo desse comportamento.
javascript
html
css
SuperAadi
fonte
fonte
O problema é que as cores têm o mesmo nível de importância para o css e, portanto, o código não sabe qual priorizar. Portanto, para corrigir isso, você deve tornar o verde mais importante no código css.
Para fazer isso, altere o código css do foco para ficar assim.
Espero que isto ajude!
fonte
Em vez de adicionar cor do javascript, você pode usar o obrigatório na caixa de entrada e: inválido no CSS. Verifique o trecho
fonte
Você pode simplesmente reverter a cor da borda na keyup e criar uma nova classe
error
para substituir a cor da borda em vermelhofonte
!important
propriedade a um elemento no css torna o estilo não atualizável em qualquer instância.Você está definindo as cores via JS, mas nunca desmarcando-as; portanto, elas estão sendo definidas permanentemente.
Uma maneira de interromper esse comportamento é também adicionar outra função que captura o
OnClick
evento dos campos de texto e "redefinir" ouunset
as cores quando elas são clicadas dentro.Dê uma olhada aqui para ter uma idéia de como começar a lidar com o
OnClick
evento:https://jsfiddle.net/warunamanjula/qy0hvmyq/1/
fonte
Basta adicionar
onfocus
atributoJavascript
Html
fonte
Porque quando você adiciona cor do javascript ou de qualquer propriedade do css, ele é adicionado inline, então basta escrever o foco
border-color
!important
.fonte