Non si puo' fare un test all'onclick del pulsante submit.... qualunque sia l'esito il form parte lo stesso dato che al puilsante un qualunque valore di ritorno e' indifferente.
Esegui il controllo sull'evento onsubmit del form:
<form ... onsubmit="return validate()">