স্টাইলিশ এটি করতে পারে না কারণ CSS এটি করতে পারে না। সিএসএসের কোনও <input>
মান ( সিউডো) নেই ( মান) এর জন্য নির্বাচক । দেখা:
:empty
নির্বাচক একমাত্র সন্তান নোড, না ইনপুট মান বোঝায়।
[value=""]
না কাজ; তবে শুধুমাত্র প্রাথমিক অবস্থার জন্য। এটি কারণ নোডের value
বৈশিষ্ট্য (যা CSS দেখায়) নোডের value
সম্পত্তি হিসাবে একই নয় (ব্যবহারকারী বা ডোম জাভাস্ক্রিপ্ট দ্বারা পরিবর্তিত এবং ফর্ম ডেটা হিসাবে জমা দেওয়া)।
আপনি যদি কেবল প্রাথমিক অবস্থার বিষয়ে চিন্তা না করেন তবে আপনাকে অবশ্যই একটি ইউক্রিপ্ট স্ক্রিপ্ট বা গ্রিসমোনকি স্ক্রিপ্ট ব্যবহার করতে হবে । ভাগ্যক্রমে এটি কঠিন নয়। নিম্নলিখিত স্ক্রিপ্টটি ক্রোম, বা ফায়ারফক্সে গ্রিসমোনকি বা স্ক্রিপ্টিশ ইনস্টল করা, বা এমন কোনও ব্রাউজারে ব্যবহার করবে যা ইউজার স্ক্রিপ্টগুলিকে সমর্থন করে (অর্থাত্ বেশিরভাগ ব্রাউজার, আইআই ব্যতীত)।
এই jsBin পৃষ্ঠাতে CSS এর সীমাবদ্ধতার সাথে জাভাস্ক্রিপ্ট সমাধানের একটি ডেমো দেখুন ।
// ==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";
}