获取 Checked Checbox 的值返回 JavaScript/ASP.NET VB 中未定义的值

Getting the Value of Checked Checbox returns undefined in JavaScript/ASP.NET VB

本文关键字:NET VB 未定义 ASP JavaScript Checked Checbox 返回 获取      更新时间:2023-09-26

我有一个Checkbox里面有 10 个项目GridView

<ItemTemplate>
   <asp:CheckBox ID="chkGrid" name = "sample1" class = "messageCheckbox" runat="server"    onclick="javascript:SelectCheckedItem(this)" Text = '<%# Bind("status_desc") %>'  />
</ItemTemplate>

我想要的是获取GridViewCheckBox的值。如果我使用 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