Задать вопрос
  • Как исправить ошибку с неработающими родительскими и дочерними checkbox?

    @Matthew06 Автор вопроса
    Итоговый (рабочий) вариант.

    <script>
        var submitButton = document.getElementById('submit_1');
        if(submitButton){
        submitButton.addEventListener('click', function(event) {
            this.disabled = true;
        });
        }
        function toggleChildren(parentId){
        const parentCheckbox=document.getElementById(parentId);
        const childCheckboxes=document.querySelectorAll(`input[type="checkbox"][data-parent=${parentId}]`);
    
        childCheckboxes.forEach(child => {
            child.checked = parentCheckbox.checked;
        });
    }
    function checkParent(parentId) {
        const parentCheckbox = document.getElementById(parentId);
        const childCheckboxes = document.querySelectorAll(`input[type="checkbox"][data-parent=${parentId}]`);
    
        // Проверяем, все ли дочерние чекбоксы сняты
        const allUnchecked = Array.from(childCheckboxes).every(child => !child.checked);
    
        // Если все дочерние чекбоксы сняты, снимаем галочку у родительского
        parentCheckbox.checked = !allUnchecked;
    }
    </script>
    
    <div class="second_line">
            <div class="content_organ">
                <label><h4>Organe_name</h4></label>
                <!--<input type="text" name="organe">-->
                <br>
                {% for o in organ_set_sort %}
                <!--o = o.filter(question = qu.id) -->
                <label><input type="checkbox" name={{o}} value={{o}} id="{{o}}" onchange="toggleChildren('{{o}}')">{{o}}</label>
                <br>
                {% endfor %}
            </div>
            <div class="content_tissue">
                <label><h4>Tissue_name</h4></label>
                <!--        <input type="text"  name="tissue">-->
                {% for t in tissue_set_sort %}
                <!--o = o.filter(question = qu.id) -->
                <label><input type="checkbox" name={{t.0}} value={{t.0}} data-parent="{{t.1}}" onchange="checkParent('{{t.1}}')">{{t.0}}</label>
                <br>
                <br>
                {% endfor %}
            </div>
        </div>


    Отдельное спасибо Алексей Уколов за помощь. Обязательно почитаю!
    Ответ написан
    Комментировать