vero, non è possibile (x ora) farlo con i css
però proprio a voler ottenere il risultato con minimo sforzo puoi includere questo javascript esterno che, almeno con i browser moderni, fa quello che chiedi (senza controindicazioni, cioè puoi avere qualsiasi altro gestore evento sul body o sugli input, compresi onfocus/onblur)
gestori_evento_dinamici.js
codice:
<!--
function changeColor(e,clss){
if(!e) e=window.event;
var src=(e.target) ? e.target: e.srcElement;
if(src.className) src.className=clss;
}
function init(){
if(document.getElementsByTagName && typeof(document.getElementsByTagName("BODY")[0].className)!='undefined'){
var inp=document.getElementsByTagName("INPUT");
for(var k=0;k<inp.length;k++){
if(inp[k].type=='text' && inp[k].className=='formfield'){
_attachToEvent(inp[k], "focus", function(e){changeColor(e,'formfield_focus')});
_attachToEvent(inp[k], "blur", function(e){changeColor(e,'formfield')});
}
}
}
}
function _attachToEvent (obj, name, func) {
if(obj.addEventListener) obj.addEventListener(name, func, false);
else if(obj.attachEvent) obj.attachEvent("on"+name, func);
}
_attachToEvent(window, "load", init);
//-->
nella pagina
codice:
<style type="text/css">
.formfield {
background-color: #ffffff;
}
.formfield_focus {
background-color: #00ff00;
}
</style>
<script type="text/javascript" src="gestori_evento_dinamici.js"></script>
...
<form>
<input type="text" class="classe_non_interessata" name="campo0" />
<input type="text" class="formfield" name="campo1" />
<input type="text" class="formfield" name="campon" onblur="alert(this.value)" />
</form>
ciao