jQuery: validare un gruppo di checkbox

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.

Torna su