dovresti provare a fare un controllo all'evento onsubmit invece che all'evento onchange

se la funziona che fa il controllo del campo si chiama ipoteticamente "check()" e restituisce un booleano allora basta fare

<form... onsubmit="return check()">