buenas,
el evento se registra correctamente. tu problema debe ser la inhabilidad de poder detener el envio cuando los datos no validan bien. esto por la forma en que se registro el evento, addEventListener. cuando se usa la funcion estandar para registrar eventos, la forma de cancelar el evento es un tanto distinto. en lugar de devolver un boolean false debes invocar la funcion
preventDefault desde el objeto
event que captura el handler. no obstante, en iexplorer -por tener un modelo distinto- debes asignar un boolean a la propiedad
returnValue del objeto
event.
en fin, dentro de la funcion anonima que has registrado como handler debes escribir
arguments[0].preventDefault() -modelo DOM- y
arguments[0].returnValue = false -modelo iexplorer-.