Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过javascript获取复选框列表中选中项的值_Javascript_Asp.net_Checkboxlist - Fatal编程技术网

无法通过javascript获取复选框列表中选中项的值

无法通过javascript获取复选框列表中选中项的值,javascript,asp.net,checkboxlist,Javascript,Asp.net,Checkboxlist,在我的应用程序中,我有一个复选框列表。下面列出的是复选框列表的html,以及在加载它所在的页面时绑定它的vb代码 <asp:CheckBoxList Runat="server" id="chklistTeams" RepeatColumns="7" RepeatDirection="Horizontal" CellPadding="4" Font-Size="7pt"></asp:CheckBoxList> 当按下保存按

在我的应用程序中,我有一个复选框列表。下面列出的是复选框列表的html,以及在加载它所在的页面时绑定它的vb代码

<asp:CheckBoxList Runat="server" id="chklistTeams" RepeatColumns="7" RepeatDirection="Horizontal"
                        CellPadding="4" Font-Size="7pt"></asp:CheckBoxList>
当按下保存按钮时,将调用javascript函数。下面是调用的函数的一部分,它应该为我们获取项的值

var checkList = document.getElementById('chklistTeams');
var checkBoxList = checkList.getElementsByTagName("input");
var checkBoxSelectedItems = new Array();

for (var i = 0; i < checkBoxList.length; i++) {
    if (checkBoxList[i].checked) {
        checkBoxSelectedItems.push(checkBoxList[i].value);
        alert('checked - checkBoxList[i]: ' + checkBoxList[i].value)
    }
}

有人知道为什么javascript获取值的方法会像VB那样给我“开”而不是整数值吗?再次感谢你的帮助。再一次-这必须在JS中完成-不能使用VB代码隐藏方式,因为函数是公共和共享的。谢谢。

找到了解决方案,制作了全局共享数组,加载时用id值填充数组,然后通过javascipt我能够获得选中项目的索引-然后可以转到同一索引处的数组以获取id值供以后使用。

checkboxlist.items(index)属于listitem类型,listitem具有可以设置客户端属性的attributes属性

下面是代码示例:

在chklistTeams数据绑定事件中:

foreach(ListItem li in chklistTeams.Items)
{
     li.Attributes.Add("JSvalue", li.Value);
}
在JavaScript中:

checkBoxSelectedItems.push(checkBoxList[i].getAttribute("JSvalue"));

是否绑定到复选框的数据保存在viewstate中,而不是作为复选框的属性?我正在浏览此页面,但找不到如何轻松添加客户端属性。在前面提到的标题为“执行客户端代码以响应用户操作”的页面中,它提到TextBoxControl.attributes(“someAttribute”)添加客户端属性,但我不知道是否可以将数据绑定到此属性。我认为情况并非如此。我认为获取项目的javascript中存在错误或缺失。我已经使用相同的方法绑定了另外两个下拉列表,并且我能够在javascript中获得它们的值。我想我错过了获取特定列表项信息的一个步骤。我试图在绑定时添加一个value属性,但这没有起作用,仍然返回“on”。Dropdown和checkboxlist不是相同的控件。您甚至声明源中没有value属性。如果它不在源代码中,那么您就无法使用JavaScriptI获得它。我的意思是,我可以用同样的方式绑定下拉列表,使用databind VB端,它可以正确绑定VB端的复选框列表值。但是我已经找到了解决这个问题的办法,并且已经把它列为给其他人的建议。谢谢你的帮助。这对我来说很有效——并且缩短了你可以对每个(chklistTeams.Items中的ListItem li){li.Attributes.Add(“数据id”,li.Value);}执行的代码
    For Each li In chklistTeams.Items
        If li.Selected = True Then
            strTeamList = strTeamList & li.Value & ","
            bolTeamSelected = True
        End If
    Next
    If bolTeamSelected = True Then
        strTeamList = strTeamList.Substring(0, strTeamList.Length - 1)
    End If
foreach(ListItem li in chklistTeams.Items)
{
     li.Attributes.Add("JSvalue", li.Value);
}
checkBoxSelectedItems.push(checkBoxList[i].getAttribute("JSvalue"));