时尚 无法做到这一点,因为CSS无法做到这一点。 CSS没有(伪)<input>
值选择器。看到:
- W3C选择器规格
- Mozilla / Firefox支持的选择器
- 跨浏览器,CSS3支持表
在
:empty选择仅指子节点,而不是输入值。
[value=""]确实 有效;但仅适用于 初始 状态。这是因为节点的
value属性 (CSS可以看到)与节点的
value
属性 (由用户或DOM javascript更改,并作为表单数据提交)不同。
除非你只关心初始状态, 你 必须 使用一个userscript或Greasemonkey的脚本。
幸运的是,这并不难。以下脚本将在Chrome或安装了Greasemonkey或scriptish的Firefox中运行,或在任何支持用户脚本的浏览器(即除IE之外的大多数浏览器)中运行。
在此jsBin页面上查看CSS限制的演示以及javascript解决方案。
// ==Userscript==// @name _Dynamically style inputs based on whether they are blank.// @include http://YOUR_SERVER.COM/YOUR_PATHvar 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";}


