Stylish tidak dapat melakukan ini karena CSS tidak dapat melakukan ini. CSS tidak memiliki penyeleksi (pseudo) untuk <input>
nilai. Lihat:
The :empty
pemilih hanya merujuk pada node anak, tidak nilai input.
[value=""]
melakukan kerja; tetapi hanya untuk kondisi awal . Ini karena value
atribut simpul (yang dilihat CSS), tidak sama dengan value
properti simpul (Diubah oleh pengguna atau javascript DOM, dan dikirimkan sebagai data formulir).
Kecuali jika Anda hanya peduli pada kondisi awal, Anda harus menggunakan skrip usersos atau Greasemonkey. Untungnya ini tidak sulit. Skrip berikut akan berfungsi di Chrome, atau Firefox dengan Greasemonkey atau Scriptish diinstal, atau di browser apa pun yang mendukung skrip pengguna (yaitu sebagian besar browser, kecuali IE).
Lihat demo batas CSS ditambah solusi javascript di halaman jsBin ini .
// ==UserScript==
// @name _Dynamically style inputs based on whether they are blank.
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
var inpsToMonitor = document.querySelectorAll (
"form[name='JustCSS'] input[name^='inp']"
);
for (var J = inpsToMonitor.length - 1; J >= 0; --J) {
inpsToMonitor[J].addEventListener ("change", adjustStyling, false);
inpsToMonitor[J].addEventListener ("keyup", adjustStyling, false);
inpsToMonitor[J].addEventListener ("focus", adjustStyling, false);
inpsToMonitor[J].addEventListener ("blur", adjustStyling, false);
inpsToMonitor[J].addEventListener ("mousedown", adjustStyling, false);
//-- Initial update. note that IE support is NOT needed.
var evt = document.createEvent ("HTMLEvents");
evt.initEvent ("change", false, true);
inpsToMonitor[J].dispatchEvent (evt);
}
function adjustStyling (zEvent) {
var inpVal = zEvent.target.value;
if (inpVal && inpVal.replace (/^\s+|\s+$/g, "") )
zEvent.target.style.background = "lime";
else
zEvent.target.style.background = "inherit";
}