2010-09-02 19 views
8

Biorąc nieznana liczba dynamicznie produkowanych wejść tekstowych.jQuery - Najprostszym sposobem, aby wyciągnąć wiele (val) w jeden ciąg

for (var i = 0; i < numInputs2Render; i++) { 
    collectEmails = collectEmails + '<input type="text" id="Email' + i + '" name="Email' + i + '">'; 
} 

muszę produkować rozdzielany przecinkami ciąg połączonych wartości wejściowych. Czy jQuery daje mi jednoetapowe rozwiązanie, czy też będę musiał iterować i ręcznie skonstruować ciąg? (W przypadku, gdy ręcznie ... Jak to wygląda?)

thx

Odpowiedz

23

Można użyć .map(), tak:

var emails = $("input[name^=Email]").map(function() { return this.value; }) 
            .get().join(','); 

używa attribute-starts-with selector znaleźć wejścia, a następnie .map() aby uzyskać wartości do tablicy można .join() w jeden ciąg znaków.

Jeśli są w pojemniku, powiedzmy <div id="Emails"> można szczupły wybierak w dół, aby coś podobnego $("#Emails input"), nie mogę powiedzieć na pewno, nie widząc znaczników, ale nic z selektora pojemnika będzie bardziej efektywny.

+2

+1 48 sekund szybciej;) Do elementów można również dodać klasę ... –

+0

@Felix - Uzgodniono, lub jeśli mieliśmy nieco więcej kontekstu, prawdopodobnie wszystkie znajdują się w jednym pojemniku, biorąc pod uwagę, w jaki sposób " są generowane. –

+0

Rzeczywiście - wyciągnąłem "class = emailInput" z OP dla dobra zwięzłości. Jak to zmieni odpowiedź? - bardzo doceniane! – justSteve

Powiązane problemy