【问题标题】:How to check ASP.NET CheckBoxList using jQuery如何使用 jQuery 检查 ASP.NET CheckBoxList
【发布时间】:2021-03-13 19:24:51
【问题描述】:

我正在使用 ASP.NET CheckBoxList 进行多项选择,并且我在页面加载时将这个 CheckBoxList 绑定在服务器端,并且我有一个输入按钮作为编辑按钮,我想在单击编辑时显示选中的复选框列表项按钮。为此,我正在尝试这样:

复选框

<div id="checkboxplant" style="width: 100%; height: 150px; overflow: auto">
<asp:CheckBoxList ID="chkPlantsAddNew" CssClass="MyClass" runat="server">
</asp:CheckBoxList></div>

AJAX

   function OnSuccessRecordCall(data, status) {
        result = Record;
        if (result != undefined && result.length > 0) {
            var checkboxList = $("[id*=chkPlantsAddNew]");
            checkboxList.each(function () {
                        if ($(this).val() == $.trim(result.PLANT_CODE_EDIT)) {
                        $(this).prop("checked", true);
                    }
            });
        }
    }

第一个和第二个表格行的 DOM

<tr>
    <td><input id="chkPlantsAddNew_0" type="checkbox" name="chkPlantsAddNew$0"><label for="chkPlantsAddNew_0">1001</label></td>
</tr>
<tr>
<td><input id="chkPlantsAddNew_1" type="checkbox" name="chkPlantsAddNew$1"><label for="chkPlantsAddNew_1">CPP</label></td>
</tr>

在浏览器上调试时,我可以看到 CheckBoxList 值没有显示任何值,它只是显示"" 字符串。为什么这样?不知道为什么会这样?

请看下面的屏幕截图,因为我选择了我的第一个tr,因为该文本是 1001,值是 0,但是在调试时我们得到的是空字符串,因此我无法检查我的特定项目?

请帮助我哪里做错了?

【问题讨论】:

  • 您突出显示的valuetable 元素的part 属性的值。它与 CheckBoxList 的值无关。我认为您可能选择了不正确的 DOM 元素来表示 CheckBoxList 的选定值,但是自从我使用 Web 表单以来已经很长时间了。
  • 如果您可以将 CheckBoxList 的渲染 HTML 显示为代码格式的文本而不是图片,将会很有帮助。然后我们也许可以告诉你要选择的正确 DOM 元素是什么。
  • 好的,我正在更新我的问题
  • @HereticMonkey 请检查我的更新问题我已更新 DOM 以获取复选框列表行项目
  • 好吧,从那里你可以看到复选框没有设置value 属性,因此搜索$(this).val() == 将不会匹配任何内容。这是 Web 表单的问题;微软没有注意应该如何使用 HTML,只是输出足够多的 HTML,看起来还不错,它们可以在后端匹配。我假设您要查找的值是“1001”或“CPP”或这些可见金额之一?

标签: jquery ajax webforms


【解决方案1】:

我在这里创建了一个函数,它将检查任何 CheckBoxList 中具有给定值的标签的复选框。所以你不应该需要循环或任何东西;它将找到带有包含给定值文本的标签的复选框,并选中该复选框。

我不明白你的其余代码是如何工作的,但这应该足以让你上路了。

按钮只是显示功能工作的示例。

function checkCheckboxWithValue(value) {
  $('input:checkbox + label').filter(':contains("' + value + '")').prev(':checkbox').prop('checked', true);
}
$('button').on('click', function() {
  var value = $(this).text();
  checkCheckboxWithValue(value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr>
    <td><input id="chkPlantsAddNew_0" type="checkbox" name="chkPlantsAddNew$0"><label for="chkPlantsAddNew_0">1001</label></td>
  </tr>
  <tr>
    <td><input id="chkPlantsAddNew_1" type="checkbox" name="chkPlantsAddNew$1"><label for="chkPlantsAddNew_1">CPP</label></td>
  </tr>
</table>

<button id="chk1001">1001</button>
<button id="chkCPP">CPP</button>

【讨论】:

  • 我试过你的代码,但它的错误很严重:Uncaught ReferenceError: value is not defined
  • sn-p 在 Chrome 89 中没有抛出错误...
  • 我用 Internet Explorer 尝试过,我得到了同样的错误SCRIPT5009: 'value' is undefined 你能建议我任何其他的替代方案,因为我可以看到 sn-p 按预期工作
  • 什么版本的IE?我能够毫无问题地在 IE11 中运行代码。如果您使用的是早于 11 的版本,则说明您运行的是不安全的浏览器版本,我真的无法为您提供帮助。
  • 我解决了该错误,但不是仅设置 2 个项目,而是选择所有复选框列表项。它接缝过滤器不起作用
猜你喜欢
  • 2018-08-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多