Foros del Web » Programando para Internet » Javascript »

Array de Checkbox + Javascript

Estas en el tema de Array de Checkbox + Javascript en el foro de Javascript en Foros del Web. Hola foreros: Esta cuestión tiene que ver tanto con java con php, pero la usabilidad se le dará en PHP, por eso he decidido publicar ...
  #1 (permalink)  
Antiguo 11/04/2005, 11:20
Avatar de CarlosMtnez  
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 20 años, 8 meses
Puntos: 1
Exclamación Array de Checkbox + JAVA

Hola foreros:

Esta cuestión tiene que ver tanto con java con php, pero la usabilidad se le dará en PHP, por eso he decidido publicar aquí el post. Buscando no encontré información para solucionar el problema.

La cuestión es que tengo un formulario con una matriz de checkbox del estilo
Check[] para recepcionar la matriz de checks múltiples activados en PHP, ahora bien, necesito que al pulsar un Check box de la lista (que posee el evento onClick) se seleccionen todos los demas (todos se llaman igual), uso una función llamada ChequeaTodo(objeto).

Bien, para poder acceder desde java a todo el array de checkbox, es decir, check[1], check[2] ... etc es necesario pasarle el objeto a la función de la forma ChequeaTodo(formulario.check) (sin las []) y no de la forma ChequeaTodo(this) ya que esta última únicamente le pasa el check actual y no la matriz de checks (aunque todos se llamen igual). Mi problema es que necesito recibir en la función la matriz de checks para poder acceder a sus índices y con un bucle activarlos.

Un ejemplo con algo de código:

Código:
<INPUT name"pepito[]" type="checkbox" value="1" onClick="ChequeaTodo(this)">
<INPUT name"pepito[]" type="checkbox" value="2">
<INPUT name"pepito[]" type="checkbox" value="3">
<INPUT name"pepito[]" type="checkbox" value="4">
<INPUT name"pepito[]" type="checkbox" value="5">
Con la siguiente función:
Código:
function ChequeaTodo(objeto) {
   var longitud = campo.length;

  for (i=1; i < longitud; i++) {
       campo[i].checked = campo[0].checked; 
       //Lo hago de esta manera para poner el resto de checks al valor del primero (Activar/desactivar todos)
  }
}
Sólo el primero de los checks seleccionará todos de manera simultánea

Pasandole el parámetro con un this desde el Check no funciona, ya que no le envía el objeto check con el array.
Si la llamada se realiza de estas otras formas tampoco funciona
onClick="ChequeaTodo(formulario.pepito)"
onClick="ChequeaTodo(formulario.pepito[])"

Eso sí, si los nombres de los checks no llevaran los malditos [] funcionaría perfectamente con la llamada onClick="ChequeaTodo(formulario.pepito)"

¿Alguien se ha encontrado en este problema o conoce alguna solución?

Una ayudita

Saludetes.
  #2 (permalink)  
Antiguo 12/04/2005, 05:07
Avatar de CarlosMtnez  
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 20 años, 8 meses
Puntos: 1
UP!! UP!!

Alguien sabe algo?

Saludos!
  #3 (permalink)  
Antiguo 25/04/2005, 14:59
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
pero porque no pones un checkbox discriminado de la lista!

<INPUT name"selecciona" type="checkbox" value="0" onClick="ChequeaTodo(this)">
<INPUT name"pepito[]" type="checkbox" value="1">
<INPUT name"pepito[]" type="checkbox" value="2">
<INPUT name"pepito[]" type="checkbox" value="3">
<INPUT name"pepito[]" type="checkbox" value="4">
<INPUT name"pepito[]" type="checkbox" value="5">
__________________
Ignacio
  #4 (permalink)  
Antiguo 25/04/2005, 15:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Bueno . .PHP ya sabes que se ejecuta del lado del servidor .. la acción que deseas hacer lo haces sobre tu navegador (cliente) .. ese tema lo controla totalmente javascript ..

El detalle de usar "[]" (array) en los nombres de tus checkbox (elementos de formulario) simplemente se trata a la hora de tomar su valor .. no por nombre sino por "ID" (o por ahí va la cosa ... ). En este foro de javascript te orientarán mejor al respecto .. de todas formas ves mirando sobre "getElementByID()" de javascript.

No sé si esto te ayudará .. pero seguro que aquí te orientarán mejor al respecto:
https://lists.latech.edu/pipermail/j...il/009290.html

Un saludo,
  #5 (permalink)  
Antiguo 26/04/2005, 02:09
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola nemon

Prueba esta función:
Código PHP:
function ChequeaTodo(chk) {
  for(
i=0;ele=chk.form.elements[i];i++)
    if(
ele.type=='checkbox')
      
ele.checked=chk.checked;

La llamas con: onclick="ChequeaTodo(this)"

Saludos,
  #6 (permalink)  
Antiguo 03/05/2005, 18:33
Avatar de CarlosMtnez  
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 20 años, 8 meses
Puntos: 1
Muchas gracias por las respuestas, en cuanto tenga tiempo probaré cosillas.

Saludos!
  #7 (permalink)  
Antiguo 06/01/2010, 11:05
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Array de Checkbox + Javascript

Hola a todos para los que les vuelva a pasar esto pueden hacer lo siguiente:

<script language="javascript">

function ChequeaTodo( sel ) {

var listaUsuariosSeleccionados, sel;

listaUsuariosSeleccionados = document.form_lista_usuarios['usu[]'];

for (i = 0; lcheck = listaUsuariosSeleccionados[i]; i++) {

lcheck.checked = sel.checked;
}

}

</script>


y el formulario


<form action="" method="post" name="form_lista_usuarios" >

todos:<INPUT name"selec_todos" type="checkbox" onClick="ChequeaTodo( this )">
<input name="usu[]" type="checkbox" value="1">
<input name="usu[]" type="checkbox" value="2">
<input name="usu[]" type="checkbox" value="3">
<input name="usu[]" type="checkbox" value="4">

</form>
  #8 (permalink)  
Antiguo 06/01/2010, 11:09
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Array de Checkbox + Javascript

Hola ndvalencia

Te recuerdo el aviso que había al final de este tema y que parece que no has leído.



Tema cerrado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:35.