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>
- Ketika saya fokus pada bidang teks, warna latar belakang dan perbatasan berubah menjadi kuning dan hijau masing-masing (melalui css).
- Jika saya mengklik ajukan tanpa memasukkan apa pun, warna batas berubah menjadi merah (melalui javascript).
- Tetapi ketika saya membawa fokus pada bidang teks lagi, warna batas merah tidak hilang, sebaliknya saya mendapatkan batas hijau dan merah.
Saya ingin menjadi hijau saja. Bisakah Anda juga menjelaskan alasan perilaku ini.
javascript
html
css
SuperAadi
sumber
sumber
Masalahnya adalah warna memiliki tingkat kepentingan yang sama dengan css dan karena itu kodenya tidak tahu mana yang harus diprioritaskan. Jadi, untuk memperbaikinya, Anda harus membuat hijau lebih penting dalam kode css.
Untuk melakukan itu, ubah kode fokus css agar terlihat seperti ini.
Semoga ini membantu!
sumber
Alih-alih menambahkan warna dari javascript, Anda dapat menggunakan yang diperlukan di kotak input dan: tidak valid di CSS. Periksa cuplikannya
sumber
Anda cukup mengembalikan warna batas pada keyup dan membuat kelas baru
error
untuk menimpa warna batas menjadi merahsumber
!important
properti ke elemen dalam css membuat gaya tidak dapat diupdate kapan pun.Anda mengatur warna melalui JS, tetapi tidak pernah membatalkan pengaturannya, jadi intinya mereka diatur secara permanen.
Salah satu cara untuk menghentikan perilaku ini adalah dengan juga menambahkan fungsi lain yang menangkap
OnClick
peristiwa bidang teks, dan "reset" atauunset
warna ketika mereka diklik di dalamnya.Lihat di sini untuk ide tentang cara memulai menangani
OnClick
acara:https://jsfiddle.net/warunamanjula/qy0hvmyq/1/
sumber
Cukup tambahkan
onfocus
atributJavascript
Html
sumber
Karena ketika Anda menambahkan warna dari javascript, atau properti css, itu ditambahkan inline, jadi tulis saja fokus
border-color
!important
.sumber