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>
- Lorsque je me concentre sur les champs de texte, la couleur d'arrière-plan et de bordure passe respectivement au jaune et au vert (via css).
- Si je clique sur soumettre sans rien saisir, la couleur de la bordure devient rouge (via javascript).
- Mais lorsque je ramène le focus sur le champ de texte, la couleur de la bordure rouge ne disparaît pas, mais j'obtiens à la fois des bordures vertes et rouges.
Je veux qu'il soit vert seulement. Pouvez-vous également expliquer la raison de ce comportement.
javascript
html
css
SuperAadi
la source
la source
Le problème est que les couleurs ont le même niveau d'importance pour CSS et donc le code ne sait pas lequel prioriser. Donc, pour résoudre ce problème, vous devez rendre le vert plus important dans le code CSS.
Pour ce faire, changez le code CSS de focus pour qu'il ressemble à ceci.
J'espère que cela t'aides!
la source
Au lieu d'ajouter de la couleur à partir de javascript, vous pouvez utiliser requis dans la zone de saisie et: invalide en CSS. Vérifier l'extrait
la source
Vous pouvez simplement rétablir la couleur de la bordure lors de la saisie et créer une nouvelle classe
error
pour remplacer la couleur de la bordure par du rougela source
!important
propriété à un élément dans css rend le style non actualisable à n'importe quelle instance.Vous définissez les couleurs via JS, mais ne les désactivez jamais, donc elles sont essentiellement définies de manière permanente.
Une façon d'arrêter ce comportement consiste également à ajouter une autre fonction qui intercepte l'
OnClick
événement des champs de texte et à "réinitialiser" ouunset
les couleurs lorsqu'ils sont cliqués à l'intérieur de.Jetez un œil ici pour une idée sur la façon de commencer à gérer l'
OnClick
événement:https://jsfiddle.net/warunamanjula/qy0hvmyq/1/
la source
Ajoutez simplement un
onfocus
attributJavascript
Html
la source
Parce que lorsque vous ajoutez de la couleur à partir de javascript ou d'une propriété de css, elle est ajoutée en ligne, alors écrivez simplement focus
border-color
!important
.la source