2012-03-22 27 views
120

Ho un modulo HTML in cui utilizzo diversi pulsanti. Il problema è che indipendentemente dal pulsante su cui clic, il modulo verrà inviato anche se il pulsante non è di tipo "invia". per esempio. Pulsanti come: <button>Click to do something</button>, comportano l'invio del modulo.Disabilita modulo invio automatico sul pulsante clic

È piuttosto doloroso eseguire uno e.preventDefault() per ognuno di questi pulsanti.

Io uso l'interfaccia utente jQuery e jQuery e il sito Web è in HTML5.

C'è un modo per disabilitare questo comportamento automatico?

risposta

277

Pulsanti come <button>Click to do something</button>sono pulsanti di invio.

Impostare type="button" per modificare quello. type="submit" è l'impostazione predefinita (come specified by the HTML recommendation).

+5

perso il sonno di un giorno invano fissare il mio codice, perché non sapevo questa semplice specificazione ! – palerdot

+4

Facendo eco all'idea di Palerdot, felice di aver trovato questa nota dopo una rapida ricerca su Google e non ore uccise. Molto bene, grazie molte. – brooklynsweb

+0

questo è bello sapere! –

5

<button> 's sono infatti pulsanti di invio, non hanno altre funzionalità principali. Dovrai impostare il tipo su pulsante.
Ma se si associa il gestore di eventi come di seguito, si targetizzano tutti i pulsanti e non è necessario eseguirlo manualmente per ciascun pulsante!

+0

È 'e.preventDefault();'. – hlcs

+0

grazie, mi sono perso un po 'di 5 anni fa ;-) –

11

Non è difficile fare ciò che vuoi. Si può solo provare a utilizzare return false (return false le sostituzioni comportamento di default su ogni elemento DOM) del genere:

myform.onsubmit=function() 
{ 
    //do what you want; 
    return false; 
} 

e quindi inviare il vostro modulo utilizzando myform.submit()

o, in alternativa:

mybutton.onclick=function() 
{ 
    //do what you want; 
    return false; 
} 

Tuttavia penso che Input type = "button"/Button type = "button" non invierà il tuo modulo e potresti usarli senza problemi.

-1

se si desidera aggiungere direttamente a input come attributo, utilizzare questo

onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

questa forma impedirà presentare comportamenti

Problemi correlati