@Loserver

Как откорректировать работу JS-скрипта?

Здравствуйте, есть JS-скрипт, который выполняет следующую функцию: когда пользователь делает активными 3 чекбокса, пользователя перебрасывает на страницу по сгенерированной чекбоксами ссылке.

Ссылка формируется из value="" трех активированных пользователем чекбоксов, в value помещены отрезки полной ссылки.
Например, в одном "/uslugi", во втором "/remont/", в третьем "remont.html" = site.ru/uslugi/remont/remont.html

Чекбоксы из которых следует захватывать value указаны в скрипте нужным классом.
Теперь сама проблема: когда на странице более 3 элементов одного итого же класса - скрипт почему-то берет value всех чекбоксов, получается каша.

Помогите, пожалуйста, решить проблему. Нужно чтобы бралось value только активированных пользователем чекбоксов, а остальные, хоть и с тем же классом, не захватывались.

Спасибо!
<input id="link1" class="linkinp form-check-input" name="link" type="checkbox" value="/razbito-steklo/">

const checks = document.querySelectorAll('input.form-check-input')

checks.forEach(c => c.addEventListener('click', onClick))

function onClick() {
  if ([...checks].filter(c => c.checked).length === 3) {
    const url = 'http://site.ru' + [...checks].map(c => c.value).join('')

   location.href = url
  }
}
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergski
@sergski
web-developer
так:
const checks = document.querySelectorAll('input.form-check-input')

checks.forEach(c => c.addEventListener('click', onClick));

function onClick() {
                      
  const res = [...checks].filter(c => c.checked);
  
  if ( res.length === 3 ) {
    const url = 'http://site.ru' + res.map(c => c.value).join('');
    location.href = url;
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы