Begrenzung der auswählbaren Agenda-Punkte

Für manche Veranstaltungen ist es notwendig, die Anzahl der auswählbaren Angebote für Teilnehmende zu begrenzen.

Beispiel: Die Agenda umfasst 20 Programmpunkte, aber die Teilnehmenden dürfen nur 5 davon auswählen.

In einem solchen Fall empfiehlt sich die Nutzung der REGELN ZUR SPERRE VON ANGEBOTSELEMENTEN im Bearbeitungsmodus des REGISTRIERUNGSVORLAGE. Blocking-regel

Es gibt jedoch Situationen, in denen diese Sperrregeln nicht ausreichen, weil nur eine numerische Begrenzung erforderlich ist.

In solchen Fällen fügen Sie den folgenden JavaScript-Code im Bereich EINSTELLUNGEN > FÜR ENTWICKLER > custom.js hinzu:

$(document).ready(function() {
    const maxSelections = 5;
    const $programCols = $('.program-container .program-col');
    const $checkboxes = $('.program-container .program-col .row-two .check-wrap .checkbox-program input[type="checkbox"]');

    $checkboxes.on('change', updateCheckboxes);

    function updateCheckboxes() {
        let checkedCount = 0;

        $checkboxes.each(function() {
            if ($(this).is(':checked')) {
                checkedCount++;
            }
        });

        if (checkedCount >= maxSelections) {
            $checkboxes.each(function() {
                if (!$(this).is(':checked')) {
                    const $parentDiv = $(this).closest('.program-col');
                    $parentDiv.css('opacity', '0.5');
                    $(this).prop('disabled', true);
                }
            });
        } else {
            $checkboxes.each(function() {
                const $parentDiv = $(this).closest('.program-col');
                $parentDiv.css('opacity', '1');
                $(this).prop('disabled', false);
            });
        }
    }
});

Nach dem Einfügen des Codes sieht der Bildschirm folgendermaßen aus: fur_entwickler

Die Begrenzung lässt sich in der zweiten Zeile ändern: const maxSelections = 5;

Nach dem Speichern testen Sie bitte den Registrierungsprozess mit der Agenda, um sicherzustellen, dass das Skript wie gewünscht funktioniert.