2013-06-01 14 views
5

Ok, quindi mettere preventDefault sul pulsante di invio funziona per interrompere l'invio del modulo. La conseguenza di ciò è che non dirà all'utente i campi obbligatori e semplicemente eseguirà l'evento click sul pulsante.Combina jQuery preventDefault e input modulo richiesto

L'aggiunta di preventDefault al gestore di invio mostra all'utente i campi obbligatori, ma continua a generare l'evento click legato al pulsante.

Ho bisogno di entrambi.

<form action="" method="post"> 
    <input type="text" class="class" id="id" name="name" required="required" /> 
</form> 

Ora i JS:

$("button").click(function(event){ 
    event.preventDefault(); 
    //performs function 
}); 

Questa spareranno l'evento click, a prescindere di un ingresso forma richiesta.

$("form").submit(function(event){ 
    event.preventDefault(); 
}); 
$("button").click(function(){ 
    //performs function 
}); 

Questo mostrerà un messaggio richiesto all'utente, ma eseguirà comunque la funzione di pulsante di invio. Come faccio entrambi? Ho esaminato alcune altre domande SO che ho trovato su questo ma sembra che la maggior parte possa essere risolta aggiungendo preventDefault a form.submit.

+0

provare questo '$ ("Form") presentare (function (event) { return false; });.' –

risposta

4

In realtà stavo cercando di fare due cose quando ne avevo solo bisogno.

Non mi serviva affatto la funzione button.click poiché per impostazione predefinita invia il modulo. Dovevo solo inserire la funzione button.click all'interno di form.submit.

$("form").submit(function(event){ 
    //perform button function 
    return false; 
}); 
+0

sì! questo sembra così ovvio ora, grazie! :) – andrei

0

Spara manualmente l'evento di invio.

$("button").click(function(event) { 
    event.preventDefault(); 

    $('form').submit(); 
});