Molto spesso quando utilizziamo un gruppo di checkbox con PHP usiamo la sintassi name="gruppo[]"
per trasformare il gruppo di checkbox in un array. Qualora volessimo stabilire se almeno una checkbox all'interno del gruppo è stata selezionata, possiamo ricorrere ad un semplice plugin jQuery che effettua questo tipo di validazione. Vediamone insieme i dettagli.
Il plugin da noi creato è il seguente:
(function($) {
$.fn.oneChecked = function() {
var $ckboxes = this,
names = [],
num = 0;
$ckboxes.each(function() {
var name = this.name;
if (!$.inArray(name, names)) {
names.push(name);
}
});
for (var i = 0, l = names.length; i < l; i++) {
if ($ckboxes.filter('[name="' + names[i] + '"]:checked').length) {
num++
}
}
if (num === names.length) {
return true;
} else {
return false;
}
};
})(jQuery);
Ed ecco un suo uso pratico:
if (!$(':checkbox').oneChecked()) {
// errore
} else {
// va bene
}
Il plugin crea un array di attributi name
del gruppo di checkbox ed usa un filtro di jQuery per stabilire se le varie checkbox sono state selezionate o meno. Se lo sono, incrementa un suo contatore interno con cui tiene traccia del numero di checkbox selezionate.