我有Checkbox
,GridView
内有10个项目:
<ItemTemplate>
<asp:CheckBox ID="chkGrid" name = "sample1" class = "messageCheckbox" runat="server" onclick="javascript:SelectCheckedItem(this)" Text = '<%# Bind("status_desc") %>' />
</ItemTemplate>
我想要的是获取CheckBox
内GridView
的值。如果我使用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 {
}
}
}
但我得到了未定义的价值。
请帮忙。谢谢。
答案 0 :(得分:1)
<asp:CheckBox ID="chkGrid" Text="Status" runat="server" />
将呈现如下内容(请注意因id
而导致的runat="server"
更改)
<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());
});
}
答案 1 :(得分:1)
GridView的ID很可能不是gvDetails
,因为.NET会在ID中添加一个额外的字符串。您需要考虑在服务器端使用gvDetails.ClientID
var gvcheck = document.getElementById(<% gvDetails.ClientID %>); // This is the generated ID of the GridView