Hola:
onsubmit se ejecuta antes del envío, pero si ese manejador no recibe false, el formulario se va a enviar siempre, así que si quieres hacer otra cosa que no sea una validación, y luego quieres cancelar el envío tienes que poner por detrás return false...
La verdad es que no me enteré de la pregunta, pero creo que los firos van por ahí...
onsubmit="cualquier_accion(); return false"...
Y si no quieres que el formulario se envíe, puedes usar un botón normal (type="button".
Saludos