Hola:
Tienes toda la razón... estás usando un atributo innecesario para tu objetivo, y aunque puedas ver muchas validaciones por el id, en los formularios el atributo name es el que sirve para nombrar los datos. Si pones el name, la validación debes hacerla desde el objeto form... la estructura ideal es:
Código:
<form onsubmit="return valida(this)"...
Donde evidentemente ese this referencia al formulario, y en la validación, para poner un ejemplo escueto... validando un nombre quedaría...
<input type="nombre" />
...
function valida(f) {
return f.nombre.value != "";
}
Saludos