【问题标题】:Get value of asp.net CheckBox via jquery通过 jquery 获取 asp.net CheckBox 的值
【发布时间】:2014-01-12 20:20:38
【问题描述】:

我正在尝试加载一个隐藏字段,其中包含所有选中复选框的值列表。一切正常,除了 is(':checked') 总是返回 false。有什么想法吗?

            $('.invCheckBox').click(function () {
            var cb = '';
            var i = 0;
            debugger;
            $(".invCheckBox").each(function (index, element) {
                debugger;
                if ($(element).is(':checked')) {
                    alert($(element).attr('invNbr'));
                    if (i == 0) {
                        cb = $(element).attr('invNbr')
                    }
                    else {
                        cb = cb + ',' + $(element).attr('invNbr');
                    };
                    i = i + 1;

                };
            });
            $('MainContent_txtHiddenField').text(cb);
        });

【问题讨论】:

  • 您是否对检查的每个项目的每个元素都进行了检查?
  • 一个很好的猜测是当你运行代码时复选框没有被选中。
  • 另外,如果使用带有复选框的 jquery 而不是使用更改事件而不是点击事件。

标签: javascript jquery asp.net


【解决方案1】:

这里有一个可能对你有帮助的小提琴:) http://jsfiddle.net/sAyfw/

$('.invCheckBox').change(function () {

$('.invCheckBox').each(function()
                       {
                           alert($(this).is(':checked'));
                       });
    });

【讨论】:

  • Larid,我直接复制了您的代码并在我的项目中对其进行了测试,所有复选框仍然返回为假。我应该补充一点,这些复选框是从服务器端代码动态添加的。我注意到复选框被包裹在一个跨度标签中。不确定这是否是 ASP.Net 的正常行为()。
  • jquery 选择器正在获取跨度,而不是复选框,复选框应该具有“invCheckBox”类以确保它被选中。你能不能显示你的 .aspx 代码/htm 标记。还是你用剃须刀?
  • 你在正确的轨道上,莱尔德!我想到了。这与我创建控制服务器端的方式有关。我正在创建一个 CheckBox 控件...我将其更改为 HtmlInputCheckbox 并且它开始正常工作。我会更新我的问题以显示答案。
【解决方案2】:

无论出于何种原因,在服务器端创建 CheckBox 控件都会将输入标记包装在 span 标记中。奇怪的。所以,我改变了代码来创建一个 HtmlInputCheckBox,现在 jQuery 可以很好地工作了。

            Dim divCheckBox As New HtmlGenericControl("div")
        divCheckBox.Attributes.Add("style", "width: 95px; float: left;")
        Dim chkCheckBox As New HtmlInputCheckBox
        chkCheckBox.Attributes.Add("class", "invCheckBox")
        chkCheckBox.Attributes.Add("invNbr", invoice.InvoiceNbr)
        divCheckBox.Controls.Add(chkCheckBox)
        divInvRow.Controls.Add(divCheckBox)

【讨论】:

    【解决方案3】:

    感谢有关 asp:CheckBox 被包装在跨度中的信息。我的 jQuery 总是返回 false,我不知道为什么它不起作用。

    我用过这个:

    console.log($(this).children(1).is(':checked'));

    这与 asp:CheckBox 完美搭配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多