我的asp.net网络表单上有一个复选框列表控件,我从一个arraylist动态填充。在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复选框控件上缺少值属性,如Dave Parslow所述。我正在尝试通过调用函数服务器端来返回复选框的文本并使用它来解决方法。
答案 0 :(得分:3)
options[i].checked
将返回true或false。
options[i].value
会为您提供复选框标记的值属性。
答案 1 :(得分:0)
我认为你的问题不在于javascript,而在于填充复选框的代码。您是将ArrayList绑定为CheckBoxList数据源还是迭代ArrayList并将新ListItem添加到CheckBoxList。如果是前者,请考虑切换到后者,并确保使用同时包含text和value参数的ListItem构造函数。如果您查看HTML源代码,我怀疑您会看到生成的代码将所有复选框的值参数设置为on,这意味着这些值实际上并未绑定在代码隐藏中。
答案 2 :(得分:0)
这里不是100%适用,但请注意,如果给复选框一个cssclass,它会得到一个包围它的范围,并且该类放在那个上面。当您导航dom或禁用复选框时,这会导致各种各样的跨浏览器问题
答案 3 :(得分:0)
我在玩了很多关于prerender事件之后才意识到我实际上并不需要知道复选框的确切值,因为arraylist值与复选框的顺序相同。我搜索了arraylist以获取我需要的值的位置,然后在复选框列表中使用该位置。
这听起来有些繁琐,我不知道它是否适用于所有人,但我想我会把它放在这里,无论如何它有一天会帮助别人。
感谢您的帮助。