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>
- Когда я фокусируюсь на текстовых полях, цвет фона и границы меняется на желтый и зеленый соответственно (через css).
- Если я нажимаю на кнопку «Отправить», ничего не вводя, цвет границы меняется на красный (через javascript).
- Но когда я снова фокусируюсь на текстовом поле, цвет красной границы не исчезает, вместо этого я получаю как зеленую, так и красную границы.
Я хочу, чтобы он был только зеленым. Можете ли вы также объяснить причину такого поведения.
javascript
html
css
SuperAadi
источник
источник
Проблема в том, что цвета имеют одинаковый уровень важности для css, и поэтому код не знает, какой из них нужно расставить по приоритетам. Итак, чтобы исправить это, вы должны сделать зеленый цвет более важным в коде CSS.
Для этого измените код CSS фокуса, чтобы он выглядел следующим образом.
Надеюсь это поможет!
источник
Вместо добавления цвета из JavaScript вы можете использовать обязательные для ввода поля и: недействительно в CSS. Проверьте фрагмент
источник
Вы можете просто вернуть цвет границы в keyup и создать новый класс,
error
чтобы перезаписать цвет границы на красныйисточник
!important
свойства к элементу в css делает стиль не обновляемым в любом случае.Вы устанавливаете цвета с помощью JS, но никогда не отменяете их, так что по сути они устанавливаются постоянно.
Один из способов остановить это поведение - добавить еще одну функцию, которая перехватывает
OnClick
событие текстовых полей, и «сбросить» илиunset
цвета, когда они щелкаются внутри.Посмотрите здесь идею о том, как начать работу с
OnClick
событием:https://jsfiddle.net/warunamanjula/qy0hvmyq/1/
источник
Просто добавьте
onfocus
атрибутJavascript
Html
источник
Потому что, когда вы добавляете цвет из javascript или любого свойства CSS, он добавляется внутри строки, поэтому просто пишите фокус
border-color
!important
.источник