2009-12-15 16 views
10

Problema successivo:Safari: Disabilita invio modulo su Invio?

Sul mio sito, ho due forme. Uno per il login e uno per i dati principali. Ho un solo pulsante di invio nella mainform. Il modulo di login viene inviato tramite js su mainform submit.

Questo funziona correttamente. Ma in Safari posso premere Invio mentre il mio obiettivo è all'interno del modulo di accesso. Questo invierà il modulo di login senza il form principale, quindi ricevo un errore (Mi reindirizza a una semplice vista di un json che richiedo su submit).

È possibile disabilitare l'azione "on enter pressed"?

+0

Durante la ricerca di questo problema, mi sono imbattuto in un po 'più di contesto per questa stranezza (si noti lo stato RESOLVED WONTFIX): https://bugs.webkit.org/show_bug.cgi?id=16886 –

risposta

22

Se si dice di utilizzare comunque il JS per inviare i dati nel modulo, perché non annullare il comportamento predefinito del browser con <form onsubmit="return false;">. In questo modo, non importa se premi il pulsante di invio o premi Invio in un input non verrà inviato. Onsubmit = "return false" non dovrebbe interferire con la chiamata al metodo submit() sul modulo da JS.

+1

grazie! Ora funziona! – Newbie

+1

Risposta molto bella e pulita. – Mattis

2

È possibile aggiungere il gestore onsubmit per il modulo di accesso. Questo gestore può aiutarti a evitare di inviare il tuo modulo (e ad esempio spostare il cursore sul prossimo campo vuoto nei moduli);

<form onsubmit="do_some_function(); return false;" ></form> 

Per impedire il modulo di invio, restituire false nel gestore onsubmit;

Problemi correlati