【问题标题】:Getting the Value of Checked Checbox returns undefined in JavaScript/ASP.NET VB获取选中复选框的值在 JavaScript/ASP.NET VB 中返回未定义
【发布时间】:2013-11-14 11:15:39
【问题描述】:

我有一个CheckboxGridView 里面有 10 个项目:

<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 {

                }
            }

        }

但我得到了未定义的值。

请帮忙。谢谢。

【问题讨论】:

    标签: javascript asp.net checkbox


    【解决方案1】:
    <asp:CheckBox ID="chkGrid" Text="Status" runat="server" />
    

    将呈现如下内容(注意idrunat="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());
        });
    }
    

    【讨论】:

    • 你的意思是这样的: //JS 代码函数 SelectCheckedItem() { $('.messageCheckbox:checked').each(function () { console.log($(this).siblings('标签[for="' + itemchk.id '"]').text()); }); } //查看
    • 它返回'on'
    • 因为&lt;%# Bind("status_desc") %&gt; 为复选框文本返回'on'
    • 不。它返回诸如“已处理”、“未处理”等文本
    【解决方案2】:

    GridView 的 ID 很可能不是 gvDetails,因为 .NET 在您的 ID 中添加了一个完整的额外字符串。您需要考虑在服务器端使用gvDetails.ClientID

    var gvcheck = document.getElementById(<% gvDetails.ClientID %>); // This is the generated ID of the GridView
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      相关资源
      最近更新 更多