html differenza modulo di partecipazione tra il click (), presentare () e manuale scatto in jQuery

StackOverflow https://stackoverflow.com/questions/4744237

  •  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

È stato utile?

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:

  1. 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.

  2. secondo problema è la type del test1btn input che dovrebbe essere type="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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top