Cita:
Iniciado por maycolalvarez @dontexplain event.preventDefault() se utiliza para prevenir la acción por defecto en el evento, en el caso de un link <a> evitar la petición del href, en el caso del <form> no se enviaría la petición o envio del formulario en action, lo mismo que ocurre si retorno false al manejador del evento, donde le permito a la función validadora retornar true en caso de éxito.
además event.which no funciona en algunos navegadores, por lo cual debe de refactorizar el código para hacerlo crossbrowser
Usar el evento onsubmit del form es el ideal para validar el form, porque si se depende de un evento especifico de un input, sólo validará en función de ése input, y no del resto de elementos del form.
Por cierto, no olviden la validación del lado del servidor, recuerden que la validación del lado del cliente es opcional.
La acción por defecto del evento submit del formulario es enviar el formulario por lo que si no se previene tal acción por defecto simplemente envía primero el formulario sin ejecutar la segunda instrucción.
Por otro lado, creo que el equivalente de which en otros navegadores es keyCode por lo que bastaría un operador ternario para acceder al código de carácter
var keyCode = (window.event) ? e.which : e.keyCode;
suponiendo que e sea el
event
Un saludo.