2010-05-23 8 views
28

Cerco di ottenere l'oggetto jQuery di un pulsante di invio in un modulo specifico (ci sono diversi moduli nella stessa pagina).Come trovare il pulsante di invio in un modulo specifico in jQuery

Sono riuscito a ottenere l'elemento del modulo stesso. Assomiglia a questo:

var curForm = curElement.parents("form"); 

L'elemento corrente ha il contesto HTMLInputElement. Le diverse tecniche Ho cercato di ottenere l'elemento secondo inviare della forma:

var curSubmit = curForm.find("input[type='submit']"); 
var curSubmit = $(curForm).find("input[type='submit']");  
var curSubmit = curForm.find(":submit"); 
var curSubmit = $(curForm).find(":submit");  
var curSubmit = $(curSubmit, "input[type='submit']"); 

il risultato è sempre lo stesso (e molto strano). Il risultato che ottengo è lo stesso elemento di "curElement".

Quindi, come posso ottenere il pulsante di invio corretto?

+0

Che dovrebbe funzionare. Puoi mostrare un esempio, forse su http://JSBin.com? – SLaks

risposta

51

Il seguente dovrebbe funzionare:

var submit = curElement.closest('form').find(':submit'); 
+6

+1 per: inviare! Molto più facile da usare rispetto ai selettori di attributi. –

13

questo dovrebbe funzionare:

var curSubmit = $("input[type=submit]",curForm); 

EDIT: Nota dispersi ' nel selettore

1

BTW: Ultimo selettore sembra strano. Seleziona ogni curSubmit (hm?) In ogni tag input[type=submit]. Può essere che si intende var curSubmit = $("input[type=submit]", curForm);

0

Nel caso in cui si desidera trovare il pulsante del submit modulo dopo che è stato inviato, è possibile trovare il seguente utile ... Io lo uso per disattivare il pulsante di invio dopo che il modulo è stato inviato per evitare più clic.

$("form").submit(function() { 
    if ($(this).valid()) { // in case you have some validation 
    $(this).find(":submit").prop('disabled', true); 
    $("*").css("cursor", "wait"); // in case you want to show a waiting cursor after submit 
    } 
}); 
2

Questo funziona per me:

var curSubmit = $("input[type=submit]",this); 

dove questo significa forma attuale presentato

ad es. per ottenere il nome del pulsante inviato e tutti gli input inviati

$("form").on("submit", function(event) { 
    event.preventDefault(); 
    var data = $(this).serialize(); //all input variables 
    console.log(data); //print data in console 
    var submit = $("input[type=submit]",this).attr('name'); 
    alert(submit); // name of submit button 
}); 
+0

Nel primo esempio .. non dovrebbe essere '$ (questo)' invece di semplice 'questo'? – Pixel1002

+0

@ Pixel1002 $ è intorno a questo e "input [type = submit]" –

Problemi correlati