è solo questione di logica

Priva avevi usato il type=submit() che ovviamente causa l'invio del modulo. A quel punto non puoi più gestire il controllo dei campi, no?

La tua funzione invece chiama già il metodo submit() dopo la validazione dei campi, quindi è normale che sia sufficiente attivare la funzione con un pulsante semplice