Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Onchange как checked

Вася Б Мастер (1452), открыт 2 недели назад
Добра всем!
Как заставить onchange работать как checked т.е. по умолчанию как бы уже нажато.

В моем случае checked работает но onchange его не признает, и срабатывает только при ручном клике....

Это все делается для того, чтобы обработать форму, которая вываливается после серии нажатых чекбоксов. Те чекбоксы активируют скрытые дивы с помощью onchange. И вот, чтобы при перезагрузке все это дело оставалось активным хочу через ИФ-ы назначить checked-ы... Но тут появилась проблема которая описана сверху

написать дополнительный javascript аки "чат без перезагрузки" считаю неоправданным усложнением...
1 ответ
frontDev Мастер (1531) 2 недели назад
 // Для одного чекбокса
const checkbox = document.querySelector('#checkboxId');
checkbox.checked = true;
checkbox.dispatchEvent(new Event('change'));

// Для нескольких чекбоксов
const checkboxes = document.querySelectorAll('input[type="checkbox"]');
checkboxes.forEach(checkbox => {
checkbox.checked = true;
checkbox.dispatchEvent(new Event('change'));
});
В вашем конкретном случае с чекбоксами формы вы можете сделать что-то вроде:

 const features = document.querySelectorAll('.map__checkbox'); 
features.forEach(feature => {
if (/* your condition here */) {
feature.checked = true;
feature.dispatchEvent(new Event('change'));
}
});
Это одновременно установит отмеченное состояние и запустит обработчик событий изменения, который должен показать/скрыть ваши скрытые div, как и ожидалось. Событие изменения сработает так же, как если бы пользователь нажал на флажок вручную.
Вася БМастер (1452) 2 недели назад
БОЛЬШОЕ СПАСИБО! Буду обмозговать.
Вася БМастер (1452) 2 недели назад
Все получилось! Думаю Вы помогли очень многим.
Для тех кто в особенном танке как я, сообщаю: Эти скрипты должны стоять снизу, после формы и обработчика.
frontDev Мастер (1531) Вася Б, Рад что помог!
Похожие вопросы