Cita:
Iniciado por yonineitor Tengo lo siguiente:
<input type="checkbox" name="n_check[]" >
<input type="checkbox" name="n_check[]" >
<input type="checkbox" name="n_check[]" >
Posteriormente los mando por POST.
Pero al no seleccionar los name, el tamaño del arreglo se decrementa :S. es decir no sucede lo mismo que con los type="text".
Necesito: Obtener todos los array de los checkbox que tienen name de arreglo.
Espero haberme explicado, gracias
Un enunciado más que confuso.
Vayamos por el lado del javascript y html primero
Los name no se seleccionan, se selecciona un cb que tiene un name
El tamaño del arreglo se decrementa?
Obtener todos los array de los checkbox???, en todo caso el conjunto de checkboxes de un mismo name podrían conformar un array.
que tienen name de arreglo??? tus cb tienen por name n_check, el agregado de [] servirá para construir un array en tu php, lo que se envía por post sigue siendo $_POST[n_check];, para el javascript es necesario, ya que podés construir un array de cb del mismo nombre con getElementsByName(), que funciona en todos los navegadores
A partir de ahi, lo que quieras hacer con ese jQuery ó con Ajax, ya no tengo idea
Código PHP:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Manejo de checkboxes javascript</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style type="text/css">
/*<![CDATA[*/
button{
width: 300px;
}
/*]]>*/
</style>
<script type="text/javascript">
//<![CDATA[
var cb = [];
function verifica(nombreGrupo){
var n=0,cuales="";
cb = document.getElementsByName(nombreGrupo);
alert('El total de checkbox de name = ' + nombreGrupo + ' es: ' + cb.length);
for (var i = 0; i < cb.length; i++){
var e = parseInt(i);
alert('Valor del checkbox ' + (e+1) + ': ' + cb[i].value);
if(cb[i].checked == true){
cuales += cb[i].value + ' ';
n++;
}
} // fin loop
if(n == 0){
var mensaje = ' no hubo selección';
}else{
var mensaje = 'Se marcaron el/los checkbox de valor: ' + cuales
}
alert('El total de checkbox marcados es: ' + n);
alert(mensaje);
document.getElementById('boxes').reset();
}
//]]>
</script>
</head>
<body>
<?php
$link = "";
if(isset($_POST['procesar'])){ $opciones = $_POST['g_check'];
// Con esto te imprime cuales opciones se seleccionaron
echo "<p>No hay opciones seleccionadas.</p>\n";
}else{
$totalSeleccionados = count($opciones); echo "<p>Se seleccionaron $totalSeleccionados opcion(s): ";
for($i=0; $i < $totalSeleccionados; $i++){
echo($opciones[$i] . " ");
}
echo "</p>";
}
// una variante si querés saber si un checkbox en particular está seleccionado
// lo pongo solo para dos, A y B, podés agregarla para el resto, se puede tambie extraer esta info
// del resultado anterior, usa la función estaSeleccionado() al pie
if(estaSeleccionado('g_check','A')){
echo "<b>A se incluye en la selección</b><br />";
}
if(estaSeleccionado('g_check','B')){
echo "<b>B se incluye en la selección</b><br />";
}
echo "<p><a href='" . $_SERVER['PHP_SELF'] . "'>Utilice este link para repetir el ejemplo</a></p>";
} // cierre post procesar
function estaSeleccionado($nombreCb,$valorCB){
if(!empty($_POST[$nombreCb])){ foreach($_POST[$nombreCb] as $elValor){
if($elValor == $valorCB){
return true;
}
}
}
return false;
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="boxes">
<div>Primer Grupo<br />
A <input type="checkbox" name="g_check[]" value="A" />
B <input type="checkbox" name="g_check[]" value="B" />
C <input type="checkbox" name="g_check[]" value="C" />
</div>
<div>Segundo Grupo<br />
D <input type="checkbox" name="g2_check" value="D" />
E <input type="checkbox" name="g2_check" value="E" />
F <input type="checkbox" name="g2_check" value="F" />
H <input type="checkbox" name="g2_check" value="H" />
I <input type="checkbox" name="g2_check" value="I" />
</div>
<input type="submit" name="procesar" value="procesar el grupo 1, solo ese grupo se pasa como array al php" />
</form>
<div>
Verificación con javascript<br/>
<button onclick="verifica('g_check[]');">verificar grupo 1 : name = g_check[]</button><br />
<button onclick="verifica('g2_check');">verificar grupo 2 : name = g2_check</button><br />
</div>
</body>
</html>
Demo:
http://foros.emprear.com/php/boxes_js.php
Saludos