html differenza modulo di partecipazione tra il click (), presentare () e manuale scatto in jQuery
-
13-10-2019 - |
Domanda
Ho una pagina JSP come segue:
<script type="text/javascript" src="/mywebapp/js/jquery.js"></script>
<script type="text/javascript">
$( function() {
$('#testform').submit(function(){
alert('now starting submit');
return true;
});
$("#test1btn").click(function(){
$('#testform #submit').click();
});
$("#test2btn").click(function(){
$('#testform').submit();
});
});
</script>
<form id="testform" method="post" action="backend/search_test.do">
<input id="reqpagenr" name="reqpagenr" size="10">
<input type="button" id="test1btn" value="TestClick"/>
<input type="button" id="test2btn" value="TestSubmit"/>
<input id="submit" type="submit" value="Go">
</form>
Quando clicco manualmente (vale a dire utilizzando un mouse) il pulsante "Go", il modulo viene inviato dopo aver visualizzato il testo "ora di iniziare submit"; quando fai clic sul pulsante "TestClick", la forma è successo presentato, ma il testo "ora di partenza invia" non viene in su; quando fai clic sul pulsante "TestSubmit", il testo "ora di iniziare presentare" appare, ma il modulo non viene inviato a tutti.
Contrariamente alle mie soddisfasse, i pulsanti "TestClick" e "TestSubmit" non funzionano come il tasto "Go" fa quando entrambi sono cliccato. Nella mia comprensione, i tre clic sui pulsanti dovrebbero fare la stessa cosa, che è, per inviare il modulo dopo il testo "ora di iniziare presentare" appare. Quindi la mia domanda è: perché i risultati dei tre clic del pulsante è diverso?
Sto utilizzando jQuery 1.3.2
Soluzione
Il secondo pulsante non inviare il modulo a causa di un bug in jQuery (o il DOM), che fa sì che il metodo submit
a fallire se il submit id del pulsante è 'submit'. Vedere: http://bugs.jquery.com/ticket/1414
Altri suggerimenti
Sembra che il gestore di eventi jQuery presentare sta ottenendo ignorato quando si imposta manualmente il modulo di inviare tramite $ ( '# TestForm') submit ().;
Questo dovrebbe funzionare nel gestore di clic:
$('#testform').trigger("submit")
AGGIORNAMENTO:
-
richardml ha detto che il primo problema che hai è un Bug jQuery così prima cosa è quella di rinominare il
id
della sottoporre a qualcos'altro. -
secondo problema è la
type
del test1btninput
che dovrebbe esseretype="submit"
al fine di comportarsi come un normale pulsante di invio.
Il trucco è quello di cambiare il tipo sul passaggio del mouse, in modo che il codice sarà simile a questa:
$(function() {
$('#testform').submit(function() {
alert('now starting submit');
});
//TestClick
$('#test1btn').hover(function() {
$(this)[0].setAttribute('type', 'submit');
},function() {
$(this)[0].setAttribute('type', 'button');
});
//TestSubmit
$('#test2btn').click(function() {
$('#testform').submit();
});
});
Il resto sta funzionando come previsto.
spero che questo aiuto
si dovrebbe utilizzare l'evento onSubmit per attivare la funzione invece.
<form id="testform" method="post" onsubmit="foo()" action="backend/search_test.do">
questo attiverà il foo () ogni volta che si invia il modulo sia utilizzando il pulsante di invio o di conferma () metodo.