IE7 thinks "onchange" means "onblurafterchange", here's a way to get around it in checkboxes.
window.jscript/*@cc_on=@_jscript_version@*/
if (jscript==5.7) {//if IE7
var inputs = document.getElementsByTagName("input"), i=-1, l=inputs.length;
while (++i!==l) {
var inputs_i=inputs[i];
if ((inputs_i.type=="checkbox")&&inputs_i.onchange) {
inputs_i._onchange=inputs_i.onchange;
inputs_i.onchange=null;
inputs_i.onpropertychange=function() {if (event.propertyName=='checked') this._onchange();};
}
}
}