获取Checked Checkbox的值在JavaScript / ASP.NET VB中返回undefined

时间:2013-11-14 02:52:07

标签: javascript asp.net checkbox

我有CheckboxGridView内有10个项目:

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

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

                }
            }

        }

但我得到了未定义的价值。

请帮忙。谢谢。

2 个答案:

答案 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