The :empty selector refers only to child nodes, not input values.[value=""]does work; but only for the initial state. This is because a node's valueattribute (that CSS sees), is not the same as the node's valueproperty (Changed by the user or DOM javascript, and submitted as form data).

Unless you care only about the initial state, you must use a userscript or Greasemonkey script. Fortunately this is not hard. The following script will work in Chrome, or Firefox with Greasemonkey or Scriptish installed, or in any browser that supports userscripts (IE most browsers, except IE).

See a demo of the limits of CSS plus the javascript solution at this jsBin page.