Hola:
Justamente las validaciones en el cliente debe hacerse desde el evento submit... haciendo que reciba true si pasa la validación y false para cancelar el envío... y siempre un botón del tipo submit... una plantilla de formulario estándard sería así:
<form action="destino.php" method="get" onsubmit="return validar(this)">
<input type="text" name="control1" />
<button type="submit" >enviar</button>
</form>
Si te fijas, al ser el botón de tipo submit, no es necesario programar su evento "click"... y el propio envío submit es un evento que se activa y se ejecuta sui manejador... también debes considerar ese return.
La función validar más sencilla sería:
function validar(f) {
return f.control1.value != "";
}
Saludos