Cita: pero esto solo se consigue si presionan el boton que activa el submit...
No sólo se consigue asi, si tu función por ejemplo se llama validar, tendríamos lo siguiente:
Código HTML:
<form onsubmit="return validar()"
y en la función javascript que estás creando si la condición no se cumple, (por ejemplo if(nombre=='')) dale return false; asi el formulario no se envía nunca, hasta que el validador haya comprobado todos los campos osea return true, con este ejemplo puedes usar sin problemas el <input type="submit" dentro del formulario.