2010-08-12 10 views
6

Sto cercando di ottenere i valori di più input di modulo, ma il problema è che ho diversi moduli identici sulla stessa pagina e voglio solo ottenere gli input dal modulo che è stato inviato, quindi sono usando la parola chiave "this". Questo è il mio codice:jQuery ottenere questo modulo input

$('form.contact_form').submit(function(e) { 
    var fname = $(this).children('input.fname').val(); 
    var email = $(this).children('input.email').val(); 
    var comment = $(this).children('input.comment').val(); 

Tuttavia, quando si tenta di accedere alle variabili per testare che stanno restituendo i valori sbagliati, si dice che sono tutte indefinito. Quale sarebbe il modo giusto per farlo?

Grazie per qualsiasi aiuto: D

+0

e invece di usare 'this', si consiglia di considerare l'utilizzo di' var $ target = $ (e.target) 'per ottenere l'elemento origine dell'evento ... è solo più descrittivo. – CaffGeek

risposta

7

È necessario visualizzare l'HTML.

Ma, sono diretti figli della forma?
O dovresti utilizzare .find, anziché .children perché sono nidificati più in basso?

+0

Sì, grazie mille, stupido errore, anche non familiare con il codice ... usando smarty e il modulo è in un altro file di modello quindi non ho nemmeno pensato di guardare lì! Per qualche ragione il modulo è in una tabella ... quindi gli input sono stati nidificati molto profondamente ...:/accetterò la tua risposta in pochi minuti! Non mi lascerà fare. – Becky

3

si può anche utilizzare 'questo' contesto

var fname = $('input.fname', this).val(); 
2

Usa .find() come suggerito Ciad.

$('form.contact_form').submit(function(e) { 
    var $this = $(this); 
    var fname = $this.find('input.fname').val(); 
    var email = $this.find('input.email').val(); 
    var comment = $this.find('input.comment').val(); 

}); 
+0

questa è la sintassi più pulita, nessun gioco di parole. – g33kz0r