我有一个Checkbox
里面有 10 个项目GridView
:
<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 {
}
}
}
但我得到了不确定的值。
请帮忙。谢谢。
<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());
});
}
GridView 的 ID 很可能不是gvDetails
,因为 .NET 会在 ID 中添加一个完整的额外字符串。您需要考虑在服务器端使用gvDetails.ClientID
var gvcheck = document.getElementById(<% gvDetails.ClientID %>); // This is the generated ID of the GridView