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.