Tal y como me ha indicado (con tirón de oreja incluido) caricatos en otro hilo, el tema de cambiar el tipo al botón submit hace inaccseible el formulario (tema accesibilidad).
La manera de mantener el submit sería:
Modificar el tag de entrada del formulario:
Código HTML:
<form name="calcform" action="compra.php" onsubmit="validar(calcform)" method="post">
De esta manera se invoca a la función validar() al intentar enviar el formulario. Luego se deja el submit normal:
Código HTML:
<input type="submit" value="Enviar">
Y haz que la función devuelva
true o
false en vez de
0
Código:
function validar(calcform) {
if (calcform.nombre.value.length==0){
alert("Tiene que escribir su nombre");
document.calcform.nombre.focus();
return false;
}
....