2012-08-30 8 views
10

que tienen varios campos de entrada de este modo:¿Cómo recuperar el valor de los elementos en la matriz usando jQuery?

<input type="text" name="card[]"> 
<input type="text" name="card[]"> 
<input type="text" name="card[]"> 

Los usuarios pueden añadir o eliminar estos campos según sea necesario, por lo tanto, el nombre de los campos es una matriz. Para obtener longitud de la matriz, esto funciona bien:

var n = $("input[name^= 'card']").length; 

¿Cómo puedo leer el valor de la matriz?

He intentado esto, que no funcionaba:

var n = $("input[name^='card']").length; 
var array = $("input[name^='card']"); 
for(i=0;i<n;i++) 
{ 
card_value= array[i].val(); 
alert(card_value); 
} 

Esto tampoco funcionó:

var n = $("input[name^='card']").length; 

for(i=0;i<n;i++) 
{ 
card_value= $("input[name^='card["+i+"]']").val(); 
alert(card_value); 
} 

¿Cómo puedo leer el valor de esta matriz? Ayuda!

+0

profundizar un poco por favor, ¿qué valor desea leer, el valor que el usuario introduce en realidad dentro de la 'input'? ¿Y qué quieres recuperar, todos? –

+0

try $ (input.attr ("[nombre^= 'tarjeta'])").longitud; – Wearybands

Respuesta

11

Deberá utilizar:

card_value= array.eq(i).val(); //gets jquery object at index i 

o

card_value= array[i].value; //gets dom element at index i 
+0

no funciona para mí –

+0

@scrappedcola ¿cómo puedo evitar el mismo valor? –

+0

@FreddySidauruk ¿a qué te refieres con "prevenir el mismo valor"? Eso no está relacionado con la pregunta que estaba respondiendo. En general, uno usaría un bloque if para verificar el valor frente a lo que está en la matriz. si tiene una pregunta, busque en el sitio preguntas relevantes y, si no encuentra una, cree su propia pregunta. – scrappedcola

0

Uso: http://jsfiddle.net/xH79d/

var n = $("input[name^='card']").length; 
var array = $("input[name^='card']"); 

for(i=0; i < n; i++) { 

    // use .eq() within a jQuery object to navigate it by Index 

    card_value = array.eq(i).attr('name'); // I'm assuming you wanted -name- 
    // otherwise it'd be .eq(i).val(); (if you wanted the text value) 
    alert(card_value); 
} 

6

jQuery colecciones han construido en Wi iterador º .each:

$("input[name^='card']").each(function() { 
    console.log($(this).val()); 
} 
0

Usted puede simplemente bucle aunque los artículos:

$("input[name^='card']").each(function() { 
    console.log($(this).val()); 
}); 
0

Su sintaxis es incorrecta.

card_value = $(array[i]).val(); o card_value = array[i].value;

array [i] no es un objeto jQuery (por alguna razón).

Verificar la consola de su navegador puede ser útil para cosas como esta.

11

función Uso mapa

var values = $("input[name^='card']").map(function (idx, ele) { 
    return $(ele).val(); 
}).get(); 
+1

Sugerencia: también puede usar '$ (this)' dentro de la función y eliminar los parámetros idx y ele. Y ['.get()'] (http://api.jquery.com/get/#get2) es para extraer una matriz real del objeto jQuery que devuelve ['.map()'] (http: //api.jquery.com/map/). – robsch

+0

gracias por el comentario de @Robsch, el .get es importante, el resultado devuelto .map no es una matriz de javascript. – Five

0

para leer un array, también se puede utilizar el método "each" de jQuery:

$.each($("input[name^='card']"), function(index, val){ 
    console.log(index + " : " + val); 
}); 

bono: también se puede leer objetos a través de este método.

source

Cuestiones relacionadas