Hola:
A pesar de ser un buen ejemplo, la forma de validar a mi me parece incorrecta... lo aconsejo constantemente... desde el tag form, con el evento submit (onsubmit) del form, y un botón submit normal (sin usar eventos adicionales...)
<form onsubmit="return validar (this)"...
Hay muchos mensajes sobre este tema, incluso en las FAQs hay un validador genérico muy bueno.
Saludos