Validar checkbox como arrays

En esta categoría voy a comenzar a publicar post’s con soluciones a problemas que me han quitado el sueño. Las reuniré bajo “dev-notas mentales” y trataré de separarlas por tecnología.
Así que ahi vamos.

Problema:

Tenemos un formulario html hecho de la siguiente manera:

<form method="post" action="algo.php" onsubmit="return Valida()">
<input type="checkbox" name="miCheckbox[]" value="1" />
<input type="checkbox" name="miCheckbox[]" value="2" />
<input type="checkbox" name="miCheckbox[]" value="3" />
<input type="submit" name="bSubmit" /> </form>

Necesitamos que un script php (algo.php) reciba los valores de “miCheckbox” como si fuese un array pero necesitamos validar que al menos 1 esté chequeado.
Para validar recurría siempre a “document.getElementById” para acceder a cada uno de los checkboxes, pero con listas bastante grandes se torna quizás un poco pesado el proceso.

Existe otra manera que podría ser algo mejor:

La función validar podría ser:

function Valida ()
{
if (IsChk('miCheckbox'))
{
//ok, hay al menos 1 elemento checkeado envía el form!
return true;
} else {
//ni siquiera uno chequeado no envía el form
alert ('Chequeame un elemento!');
return false;
}
}
function IsChk(chkName)
{
var found = false;
var chk = document.getElementsByName(chkName+'[]');
for (var i=0 ; i < chk.length ; i++)
{
found = chk[i].checked ? true : found;
}
return found;
}

Como diré siempre: si alguno se encuentra con el problema ahi tiene otro punto de vista.

12 pensamientos en “Validar checkbox como arrays

  1. Julian

    Muchas gracias, es uno de los pocos codigos que sirven sin mucho retoque, es decir solo hice un copy+paste y cambie el nombre del checkbox por el que yo uso… y listo! Funciona perfectamente. Mil gracias.

  2. ale Autor

    Jesus, ambos códigos van en la misma página (el form y el trozo de código javascript) … “algo.php” es el script que recibe el post nada más.
    Saludos!

  3. Geovanny Sierra

    saludos Maestro

    Disculpe el codigo que puso, me sirvio bastanten muchisimas gracias.

    pero quiro validar que por lo menos seleccione un checkbox y mostrarle un ensaje de que selecione y no consigo hacerle , por favor me podria ayudar

    por favor

  4. Grégor

    Excelente, no sabes como me saco de una situación. Aún así hago dobles y tripes validaciones por si acaso xD

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *