Как получить значение флажка в JavaScript для веб-формы ASP.NET?

Привет, ребята! У меня возникла проблема с чекбоксами в веб-форме ASP.NET. Я создаю список флажков динамически из ArrayList, но когда пытаюсь получить их значения через JavaScript, все они показывают ‘on’ вместо заданных мной значений.

Вот пример кода, который я использую:

let checkboxes = document.getElementById('списокФлажков');
let options = checkboxes.getElementsByTagName('input');

for (let i = 0; i < options.length; i++) {
  if (options[i].value === 'Другое') {
    if (options[i].checked) {
      let extraField = document.getElementById('дополнительноеПоле');
      extraField.style.display = 'block';
    }
  }
}

Проблема в том, что условие options[i].value === 'Другое' никогда не срабатывает, потому что все значения ‘on’.

Я заметил, что в сгенерированном HTML у чекбоксов нет атрибута value. Может быть, в этом причина? Кто-нибудь сталкивался с подобной проблемой? Как можно получить реальные значения чекбоксов в этом случае?

слушай, у меня была похожая проблема с чекбоксами в asp.net. я решил ее, добавив кастомный атрибут data-option к каждому чекбоксу при генерации на сервере. потом в javascript можно получить значение так:

if (options[i].dataset.option === 'Другое') {
  // твой код
}

это работает надежнее, чем полагаться на value или id. плюс можно добавить любую нужную инфу, не только значение. попробуй, должно помочь! если что, пиши - обсудим детали реализации.

Да, отсутствие атрибута value в HTML может быть причиной. Попробуй использовать свойство name вместо value для чекбоксов. Или можно добавить кастомный атрибут data-value и работать с ним. Например:

if (options[i].getAttribute('data-value') === 'Другое') {
  // твой код
}

Еще вариант — проверять id чекбокса, если он у тебя уникальный для каждого. Главное — убедиться, что нужная инфа есть в HTML.

Проблема в том, что ASP.NET по умолчанию не добавляет value к чекбоксам. Можно решить это, добавив атрибут value вручную при генерации чекбоксов на сервере. Альтернативно, используй свойство id или name для идентификации. Например:

if (options[i].id === 'checkbox_Другое' || options[i].name === 'checkbox_Другое') {
  // твой код
}

Это должно сработать, если id или name уникальны для каждого чекбокса. Главное - убедиться, что нужная информация присутствует в разметке.