2010-02-26 19 views
20

que quiero usar un jQuery "marque todas las" función en un formulario como el siguiente: http://jetlogs.org/jquery/jquery_select_all.htmljQuery - seleccionar todas las casillas de verificación con el nombre de la matriz js

Mi problema es que estoy generando mi forma de un script PHP, y yo no sé exactamente cuántas casillas de verificación tendré por adelantado. uso el "matriz" convención de nombres para ser capaz de obtener todos los valores de casillas de verificación seleccionadas en mis datos $ _POST ... así que mis casillas son así:

<input type="checkbox" name="items[]" value="<?php echo $id ?>"> 

pero esta declaración JQuery no funciona:

$("input[@name=items[]]").each(function()  
{  
    this.checked = checked_status;  
}); 

probablemente debido a que el "[]" al final de mis "artículos" desordena la declaración JQuery ... traté de escribir @ name = artículos [] así: "nombre = @ artículos [] ", y para poner algo de anti-barra antes del [y] para que no sean considerados como caracteres especiales pero no funcionó ...

¡Si alguien conoce una solución y está dispuesto a compartirla, sería genial! :)

+0

¡Intenta usar la clase y la compilación de jQuery en el motor de búsqueda hará el trabajo por ti en lugar de enlazar todos los elementos con el bucle for! – Kennethvr

+0

¿Cuál es el valor de checked_status? ¿Donde está establecido? –

Respuesta

51

Escape entre corchetes internos con \\ (sin espacio) - debería solucionar el problema.

Este selector funciona para mí:

$('input[name=items\\[\\]]') 
+0

no, eso no funciona, como dije en mi publicación: "... y para poner algo de anti-barra (= \) antes del [y] entonces ..." – Piero

+0

verifique mi edición - debe eliminar @ de su selector y usa barras diagonales inversas – rochal

+0

YupYup !! ¡Funciona de maravilla! ¡Gracias a todos por vuestra ayuda! ¡Las otras soluciones propuestas también podrían funcionar! ¡Pero este parece ser el más fácil de implementar! :) – Piero

4

En primer lugar, el atributo de nombre debe ser usado para fijar +1 elementos con el mismo nombre. Es prácticamente lo mismo que el atributo id y debe ser único por elemento exceptuado para las referencias, pero ese no es el caso para usted.

¡Intenta usar el atributo de clase, está hecho para las cosas que quieres hacer!

Otra cosa es que en su código, solo puede configurar sus casillas de verificación como "marcadas", pero nunca desmarcar, este código configurará sus casillas de verificación como verdaderas o falsas, según lo que obtenga como atributo del clic elemento.

se puede hacer algo como esto:

establecer su cheque todos casilla con un id

<input type="checkbox" id="checkAll"> 

Entonces definidos en todas las casillas de verificación que se deben verificar/sin marcar una clase

<input type="checkbox" class="checked"> 

Y usted puede hacer algo como esto en jQuery

$("#checkAll").click(function(){ 
var checkedValue = $(this).attr("checked"); 
$("input.checked").attr("checked", checkedValue); }); 

esto va a cambiar todas las casillas de verificación con la clase comprobado que el mismo atributo comprobado como el que tiene checkAll Identificación

+0

me ayudó con la función jquery, ¡gracias! – noname

8

Trate de usar

$('input[name="items[]"]') 

No hay necesidad de utilizar @ y ". Tenga en cuenta que las citas externas del selector son '. De lo contrario, podría causar un error de análisis.

+0

Gracias, @Emo. Funcionó. El enfoque de la respuesta aceptada con doble barra diagonal inversa no funciona (parece que las nuevas versiones no lo admitirán). – Rolice

1
$("input[name='smsid[]']") 

Este código funciona bien para mí ...

+2

Explicar por qué funcionó su respuesta hará que su publicación sea más útil. –

Cuestiones relacionadas