si buscas en el foro, veras las cantidades de veces repetidas que se ha hecho esta consulta. tu problema es que estas validando en el evento incorrecto. la validacion se realiza en el evento onsubmit del elemento <form>. de esta forma puedes detener el envio de formulario cuando tu patron de validacion encuentra algo mal. tu funcion de validacion tiene que devolver
false cuando los datos no validan. y dependiendo como estas invocando la funcion, a su vez debes devolver lo devuelto por la funcion. o sea,
Código:
// invocacion desde html;
<form onsubmit="return funcion_validacion(...);">
// asignacion de funcion por javascript, cualquiera de las dos variantes son validas;
// asumiendo que elem es una referencia al elemento <form>;
elem.onsubmit = function(){
return funcion_validacion(...);
};
elem.onsubmit = funcion_validacion;