2011-11-29 13 views
7

Subo una estructura de datos JSON que me separé y poblar mi arsenal de este modo:¿Cómo puedo marcar las casillas de verificación en función de los valores?

var arrayValues = data.contents.split('|'); 

// arrayValues = 1,3,4 

¿Cómo puedo comprobar las casillas de verificación correspondientes en base a los valores de la matriz?

Mi HTML se parece a esto:

<div id="divID"> 
    <input type="checkbox" name="test" value="1" /> Test 1<br /> 
    <input type="checkbox" name="test" value="2" /> Test 2<br /> 
    <input type="checkbox" name="test" value="3" /> Test 3<br /> 
    <input type="checkbox" name="test" value="4" /> Test 4<br /> 
    <input type="checkbox" name="test" value="5" /> Test 5<br />       
</div> 
+0

Qué criterios harían que marque/desmarque las casillas – JaredPar

Respuesta

15

Prueba este selector de atributos usando

$.each(arrayValues, function(i, val){ 

    $("input[value='" + val + "']").prop('checked', true); 

}); 
+0

Esto funcionó muy bien ... todo lo que tenía que hacer era incluir la etiqueta div principal. ¡Gracias! – Paul

+0

Impresionante, márcalo como respuesta siempre que puedas gracias. – ShankarSangoli

+0

Debería ser '.prop ('checked', true)' - aunque JS considera que la cadena "checked" es verdadera, por lo que el resultado final es el mismo. – Blazemonger

1

puede recorrer a través de su matriz y hacer una búsqueda de atributos en jQuery

var i = 0; 
while (arrayValues.length < i) { 
    var val = arrayValues[i]; 
    $('#divID input[value="' + val + '"]').prop('checked', 'checked'); 
    i++; 
} 

docs: http://api.jquery.com/attribute-equals-selector/

7

Javascript

$.each(arrayValues, function (index, value) { 
    $('input[name="test"][value="' + value.toString() + '"]').prop("checked", true); 
}); 
+1

Esto parece ser más preciso que la solución de ShankarSangoli, aunque no veo por qué '.toString()' en el medio es necesario. Seguramente 'value' será una cadena en todas las circunstancias. – Blazemonger

+0

@ mblase75 ... solo un hábito mío. –

+0

Sí, el autor podría haber puesto toString para que se encargue de los casos en que el valor sea un entero, pero eso también sería de tipo cadena en DOM –

0

Bien Me tomó un momento para solucionar mi error en el código. Supongo que esta pregunta es respondida por ShankarSangoli ahora.

Espero que no te importe que publique mi solución de cualquier manera. Estoy ansioso por ver si esto es peor para un rendimiento etc.

var arrayValues = new Array(1,3,4); 

$('#divID input').filter(function(){ 
    return ($.inArray(parseInt($(this).attr('value')), arrayValues)) != -1; 
}).attr('checked', 'checked'); 
0

más simple:

$('input[name="test"]').val(arrayValues); 

Esto comprobará los valores de la matriz y anular la selección de los demás.

partir de documentación de la JQuery: http://api.jquery.com/val/

val() le permite pasar una matriz de valores de los elementos. Esto es útil cuando se trabaja en un objeto jQuery que contiene elementos como < entrada type = "casilla de verificación" >, < input type = "radio" >, y < opción > s dentro de un <seleccionar>. En este caso, las entradas y las opciones que tengan un valor que coincidan con uno de los elementos de la matriz se verificarán o seleccionarán , mientras que aquellas que tengan un valor que no coincida con uno de los elementos de la matriz se desmarcarán o no seleccionado, dependiendo del tipo.

Cuestiones relacionadas