Hola:
Un formulario debe enviarse con un botón del tipo submit, de otra manera se consideraría inaccesible (no todos tienen javascript habilitado), y se cancela devolviendo false al evento submit (con el manejador onsubmit del form)
O sea que una estructura correcta del formulario debería ser:
<form onsubmit="return validar(this)" ...
<!-- otros controles...-->
<button type="submit">enviar formulario</button>
</form>
y la función validar debe tener return false para los casos que se cancele la validación.
Saludos