hay forma, solo que me parece que no lo estas haciendo de la forma correcta. para cancelar el envio se devuelve false en el evento onsubmit, creo que eso lo sabes. pero me parece que estas fallando en el elemento donde se registra el evento. el evento
se registra en el elemento FORM, no en el INPUT SUBMIT. eso por un lado...
por otro lado, si bien entiendo lo quieres registrar desde javascript. debes considerar que los eventos son como funciones normales. en otras palabras, a los eventos le asignas funciones.
Código:
// si tienes la funcion definida;
form.onsubmit = fn;
function fn(){
...
return false;
}
// con funcion anonima;
form.onsubmit = function(){
...
return false;
}
// funcion definida que requiere parametro;
form.onsubmit = function(){
return fn(parametros);
}