2010-09-02 13 views
8

Dado un número desconocido de entradas de texto producidos dinámicamente:.jQuery - La manera más fácil para tirar múltiple (val) en una cadena

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

necesito para producir una cadena delimitada por comas de los valores de entrada combinados. ¿JQuery me da una solución de un paso o tendré que iterar y construir manualmente la cadena? (Si si manualmente ... ¿cómo está esa mirada?)

THX

Respuesta

23

Usted puede utilizar .map(), así:

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

Este utiliza el attribute-starts-with selector para encontrar las entradas, a continuación, para obtener el .map() valores en una matriz puede .join() en una sola cadena.

Si están en un contenedor, dicen que un <div id="Emails"> que podría adelgazar el selector hacia abajo para algo así como $("#Emails input"), no puedo decir con seguridad sin ver su margen de beneficio, pero nada con un selector recipiente hará que sea más eficiente.

+2

+1 48 segundos más rápido;) También se podría agregar una clase a los elementos ... –

+0

@Felix - De acuerdo, o si tuviéramos un poco más de contexto, probablemente estén todos en un solo contenedor, dado que ellos ' re generado. –

+0

De hecho, saqué el 'class = emailInput' del OP en aras de la brevedad. ¿Cómo cambiaría eso la respuesta? - ¡muy apreciado! – justSteve

Cuestiones relacionadas