A dire la verita' li controlla entrambi... ma il secondo messaggio sovrascrive il primo

Cambia:
codice:
function verifica() {
ritorno=true;
msg = "";
c = document.myfrm.auto;
r = false;
for (var i=0;i<c.length;i++) {r=r||c[i].checked};
if (!r) msg+="manca gruppo 1\n"; 
ritorno = ritorno&&r;

c = document.myfrm.moto;
r = false;
for (var i=0;i<c.length;i++) {r=r||c[i].checked};
if (!r) msg+="manca gruppo 2\n"; 
ritorno = ritorno&&r;

if (!ritorno) alert(msg);

return ritorno;
}
</script>
ciao