2010-07-19 4 views
6

Qual è il jquery equivalente a: document.forms[0].elements[i].value;?Qual è il jQuery equivalente a document.forms [0] .elementi [i] .valore ;?

Non so come viaggiare attraverso un modulo e i suoi elementi in jQuery e vorrei sapere come farlo.

+1

Puoi pubblicare un esempio del tuo markup e quali valori vuoi estrarre? –

+0

Leggi come selezionare le cose qui: http://api.jquery.com/category/selectors/ e su come attraversare qui: http://api.jquery.com/category/traversing/. – karim79

+0

Ho scritto uno script di convalida del modulo di base in javascript e sto provando a trasferirlo su JQUERY. È un ciclo for che cerca tra tutti gli elementi del controllo da per assicurarsi che tutti i valori siano cambiati dal predefinito (ad esempio il cognome del nome) a qualcosa di reale. Il frammento di codice che ho postato è allegato a una variabile che salva il valore dell'ingresso corrente e lo confronta con l'elenco dei valori predefiniti. thisVal = document.forms [0] .elementi [i] .valore; – Ian

risposta

13

La traduzione solito è il selettore :input:

$("form:first :input").each(function() { 
    alert($(this).val()); //alerts the value 
}); 

Il :first è perché il vostro esempio tira il primo <form>, se c'è solo uno o tutti gli elementi di input, basta togliere lo :first. Il :input selector funziona per <input>, <select>, <textarea> ... tutti gli elementi che ti interessano in genere qui.

Tuttavia, se sapessimo esattamente qual è il tuo obiettivo, c'è probabilmente un modo molto semplice per raggiungerlo. Se puoi pubblicare più informazioni, come l'HTML e quali valori vuoi estrarre (o fare qualcos'altro con).

+0

+1 Molto pulito. :) –

+0

Grazie per la risposta. Ho scritto uno script di convalida del modulo di base in javascript e sto provando a trasferirlo su JQUERY. È un ciclo for che cerca tra tutti gli elementi nel modulo di verifica per assicurarsi che tutti i valori siano cambiati dal predefinito (ad esempio il nome del cognome) a qualcosa di reale. Lo snippet di codice che ho postato è associato a una variabile che salva il valore dell'ingresso corrente e lo confronta con l'elenco di valori predefiniti. thisVal = document.forms [0] .elementi [i] .valore; – Ian

+0

Ho anche 2 moduli sulla mia pagina. La mia attuale versione funzionante ha

per convalidare tale modulo specifico per thisVal = document.forms [formName] .elements [i] .value; – Ian

0

Non sono esattamente sicuro di quello che stai cercando di realizzare, ma si dovrebbe essere in grado di fare qualcosa del genere:

$('form:first').children(':first').val(); 

questo otterrà il valore del primo nodo figlio entro il primo <form> tag nel DOM.

+2

Questo non restituirebbe nulla ... stai selezionando un tag '' –

+0

Grazie @Nick, sei corretto - Ho corretto il mio snippet. –

+0

Questo non è ancora corretto, non è il mio downvote ... ma non penso che il tuo modo di pensare ai selettori sia corretto, questo restituirebbe il primo elemento, l'esempio è un 'elements [i]', che si traduce abbastanza da vicino: '$ ('form: first: input'). eq (i) .val();' –

0
$("#formid input").each(function(){ 
    alert($(this).attr("value")) 
}) 
+0

Questo semplicemente prenderebbe i campi 'input', non' select' o 'textarea'. –

1

Beh, tradotto letteralmente, sarebbe:

$('form:first *:nth-child(i)').val() 

Ma jQuery rende facile per afferrare gli elementi da altri modi, come ID o il selettore CSS. Sarebbe più semplice da mantenere se facessi qualcosa del tipo:

$('form#id input.name').val() 
0

Questo ti darà tutti gli elementi sotto forma. Inclusi elementi non formali:

$("#[form id]").find() 

Quindi è possibile utilizzare ciascuna funzione per attraversare tutti i bambini. Oppure è possibile utilizzare il selettore di ingresso per restituire solo gli elementi del modulo:

$("#[form id] :input") 
+0

I controlli di modulo in genere non sono figli del modulo – Quentin

+0

@David Hai ragione. Tendono ad essere annidati, anche se non sempre. Suppongo che avrei dovuto usare find o semplicemente elencare il tipo di controlli che vogliamo restituire. Cambierò almeno per usare invece find. – spinon