我在GridView
中有一个包含10个项目的Checkbox
<ItemTemplate>
<asp:CheckBox ID="chkGrid" name = "sample1" class = "messageCheckbox" runat="server" onclick="javascript:SelectCheckedItem(this)" Text = '<%# Bind("status_desc") %>' />
</ItemTemplate>
我想要的是在GridView
中获取CheckBox
的值。如果我使用VB,我会得到这些值。我想要的是通过JavaScript获得它。下面是我的JavaScript代码:
function SelectCheckedItem(itemchk) {
debugger
var gvcheck = document.getElementById('gvDetails'); //This is the ID of the GridView
if (itemchk.checked) {
var checkedValue = $('messageCheckbox:checked').val();
alert(checkedValue);
}
else {
}
}
}
但我得到了未定义的值。
请帮帮忙。谢谢。
发布于 2013-11-14 03:15:13
<asp:CheckBox ID="chkGrid" Text="Status" runat="server" />
将呈现如下所示(请注意由于runat="server"
而导致的id
更改)
<input type="checkbox" id="chkGrid_ctl01" />
<label for="chkGrid_ctl01">Status</label>
因此,要获得每个复选框的label
中的文本,您需要遍历复选框并找到相邻的标签。
要仅获取所单击复选框的label
,您可以执行以下操作
function SelectCheckedItem(itemchk) {
if (itemchk.checked) {
var checkedValue = $(itemchk)
.siblings('label[for="' + itemchk.id '"]')
.text();
console.log(checkedValue);
}
}
但是要获得所有标签,您必须使用类.messageCheckbox
遍历每个复选框
function SelectCheckedItem() {
$('.messageCheckbox:checked').each(function () {
console.log($(this).siblings('label[for="' + itemchk.id '"]').text());
});
}
发布于 2013-11-14 03:15:40
GridView的ID很可能不是gvDetails
,因为.NET会在您的ID中添加一个完整的额外字符串。您需要考虑在服务器端使用gvDetails.ClientID
var gvcheck = document.getElementById(<% gvDetails.ClientID %>); // This is the generated ID of the GridView
https://stackoverflow.com/questions/19968626
复制