e se tu provassi ad usare onChange() anzichè onKeyPress()?
l'event handler onKeyPress() cattura la pressione del tasto spacificato: se tu non spacifichi nulla, il tasto considerato per default è il tasto "invio" (che è lo stesso utilizzato anche da onSubmit(): da qui il conflitto fra i due eventi)

Secan