Archivo de la categoría: js

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.