Значение флажка веб-формы в JavaScript - PullRequest
0 голосов
/ 16 октября 2008

У меня есть элемент управления списком флажков в моей веб-форме asp.net, который я динамически заполняю из массива. В javascript я хочу иметь возможность перебирать значения в списке и, если определенное значение было выбрано для отображения других элементов управления на странице.

Моя проблема в том, что все значения в списке флажков отображаются как «вкл» вместо фактического установленного значения. Как получить фактические значения для каждого флажка?

Спасибо.

Javascript:

checkBoxs=document.getElementById(CheckboxList);
    var options=checkBoxs.getElementsByTagName('input');       

    for(var i=0;i<options.length;i++)
    {            
        if(options[i].value=="Other")
        {
            if(options[i].checked)
            {
                var  otherPub=document.getElementById('<%=alsOtherPublicity.ClientID%>');
                otherPub.style.display='block';

            }                
        } 

    }

Редактировать: Строка, с которой у меня возникают проблемы, это if (options [i] .value == "Other"), поскольку значения, отображаемые в firebug, задаются как 'on', а не значения, которые я установил.

Редактировать 2: HTML-код выглядит следующим образом:

<span id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity" class="ucFieldCBL" onChange="alValidate();" onClick="alPublicity('ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity');">
  <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_0" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$0"/>
  <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_0">Text1</label>
  <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_1" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$1"/>
  <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_1">Text2</label>
  <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_2" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$2"/>
  <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_2">Text3</label>
  <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_3" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$3"/>
  <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_3">Text4</label>
  <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_4" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$4"/>
  <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_4">Text5</label>
</span>

Похоже, что проблема связана с отсутствием атрибута значения, доступного в элементе управления флажка asp.net, как описано Дейв Парслоу . В настоящее время я пытаюсь обойти эту проблему, вызывая функцию на стороне сервера, чтобы вернуть текст флажка, и использую его вместо этого.

Ответы [ 4 ]

3 голосов
/ 16 октября 2008

options[i].checked вернет истину или ложь. options[i].value даст вам атрибут значения тега флажка.

0 голосов
/ 16 октября 2008

После долгих разыгрываний с событиями prerender я понял, что на самом деле мне не нужно знать точное значение флажка, поскольку значения массива будут в том же порядке, что и флажки. Я искал в массиве, чтобы найти нужную мне позицию, а затем использовал эту позицию в списке флажков.

Звучит немного странно, и я не знаю, сработает ли это для всех, но я подумал, что в любом случае оставлю это здесь, если это когда-нибудь поможет кому-то еще.

Спасибо за вашу помощь.

0 голосов
/ 16 октября 2008

Не применимо на 100%, но имейте в виду, что если вы поставите флажок cssclass, он будет обернут вокруг него, и класс будет помещен в него. Это вызывает всевозможные кросс-браузерные проблемы при навигации по dom или при отключении флажков

0 голосов
/ 16 октября 2008

Я думаю, что ваша проблема не с javascript, а с кодом, который заполняет флажки. Связываете ли вы ArrayList в качестве источника данных CheckBoxList или выполняете итерацию по ArrayList и добавляете новые ListItems в CheckBoxList. Если первое, рассмотрите возможность переключения на второе и убедитесь, что вы используете конструктор ListItem, который принимает параметры как текста, так и значений. Если вы посмотрите на источник HTML, я подозреваю, что вы увидите, что в сгенерированном коде для всех ваших флажков установлен параметр value, который означает, что значения фактически не были связаны в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...