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>
- Wenn ich mich auf die Textfelder konzentriere, ändern sich die Hintergrund- und Rahmenfarbe in Gelb bzw. Grün (über CSS).
- Wenn ich auf Senden klicke, ohne etwas einzugeben, ändert sich die Rahmenfarbe in Rot (durch Javascript).
- Aber wenn ich den Fokus wieder auf das Textfeld bringe, verschwindet die rote Randfarbe nicht, sondern ich bekomme sowohl grüne als auch rote Ränder.
Ich möchte, dass es nur grün ist. Können Sie auch den Grund für dieses Verhalten erklären?
javascript
html
css
SuperAadi
quelle
quelle
Das Problem ist, dass die Farben für CSS die gleiche Bedeutung haben und der Code daher nicht weiß, welche Farben priorisiert werden sollen. Um dies zu beheben, müssen Sie das Grün im CSS-Code wichtiger machen.
Ändern Sie dazu den Fokus-CSS-Code so, dass er so aussieht.
Hoffe das hilft!
quelle
Stattdessen können Sie Farbe aus Javascript hinzufügen, die Sie im Eingabefeld benötigen, und: in CSS ungültig. Überprüfen Sie das Snippet
quelle
Sie können die Rahmenfarbe beim Keyup einfach zurücksetzen und eine neue Klasse erstellen, um die Rahmenfarbe
error
in Rot zu überschreibenquelle
!important
Eigenschaft zu einem Element in CSS kann der Stil zu keinem Zeitpunkt aktualisiert werden.Sie stellen die Farben über JS ein, heben sie jedoch nie wieder auf, sodass sie im Wesentlichen dauerhaft festgelegt werden.
Eine Möglichkeit, dieses Verhalten zu stoppen, besteht darin, eine weitere Funktion hinzuzufügen, die das
OnClick
Ereignis der Textfelder abfängt undunset
die Farben "zurücksetzt", wenn sie innerhalb von angeklickt werden.Hier finden Sie eine Idee, wie Sie mit der Abwicklung des
OnClick
Ereignisses beginnen können:https://jsfiddle.net/warunamanjula/qy0hvmyq/1/
quelle
Fügen Sie einfach ein
onfocus
Attribut hinzuJavascript
Html
quelle
Denn wenn Sie Farbe aus Javascript oder einer Eigenschaft von CSS hinzufügen, wird diese inline hinzugefügt. Schreiben Sie also einfach den Fokus
border-color
!important
.quelle