У меня есть элемент управления списком флажков в моей веб-форме asp.net, который я динамически заполняю из arrayylist. В 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, как описано в Дэйв Парслоу. В настоящее время я пробую обходной путь, вызывая сторону сервера функций, чтобы вернуть текст флажка и используя его вместо этого.





options[i].checked вернет истину или ложь.
options[i].value предоставит вам атрибут значения тега флажка.
Я думаю, ваша проблема не в javascript, а в коде, который заполняет флажки. Вы привязываете ArrayList как источник данных CheckBoxList или выполняете итерацию по ArrayList и добавляете новые ListItems в CheckBoxList. Если первое, рассмотрите возможность перехода на второе и убедитесь, что вы используете конструктор ListItem, который принимает как текстовые, так и значения параметров. Если вы посмотрите на исходный HTML-код, я подозреваю, что вы увидите, что в сгенерированном коде параметр значения включен для всех ваших флажков, что означает, что значения фактически не были привязаны в коде позади.
Не на 100% применимо здесь, но имейте в виду, что если вы установите флажок cssclass, он получит охват, обернутый вокруг него, и класс будет помещен на него. Это вызывает всевозможные кроссбраузерные проблемы при навигации по dom или отключении флажков.
После долгих экспериментов с событиями предварительной визуализации я понял, что мне на самом деле не нужно знать точное значение флажка, поскольку значения arrayylist будут в том же порядке, что и флажки. Я поискал в arrayylist позицию нужного мне значения, а затем использовал эту позицию в списке флажков.
Это звучит немного странно, и я не знаю, сработает ли это для всех, но я подумал, что все равно выложу его здесь, если он когда-нибудь поможет кому-то другому.
Спасибо за вашу помощь.
Вы можете предоставить нам HTML-код?