根据 JSON 数组选择复选框值

问题描述 投票:0回答:1

我将一些 id 值作为 json 字符串存储在我的数据库中。我使用这些相同的 id 作为表单上 Bootstrap 多选复选框控件中的复选框值。

[{"formLookupId":16},{"formLookupId":23},{"formLookupId":17}]

我的方法是用这个数组设置一个hiddenField值,然后使用JS适当地设置复选框选定的值(因为我不能在服务器端执行此操作,因为它们不是服务器控件)。

 <asp:HiddenField ID="hdnFormchkboxes" runat="server" ClientIDMode="Static" />

我很接近这种方法,但我不确定我在 javascript 方面缺少什么。有人可以帮助我理解我做错了什么吗? 我对 JS 中的 json 数组没有太多经验,而且我的 JS 代码没有通过

values.includes(parseInt(checkbox.value))
测试。另外,如果有更好的方法来做到这一点,更有效,不涉及使我的控件成为服务器端控件,但允许我在服务器端操作这些复选框,我对此持开放态度。

HTML 示例复选框控件:

<label class="checkbox"><input type="checkbox" value="16"> FooBar Checkbox </label>

JS:

 if ($('#hdnFormchkboxes').attr('value') != null && $('#hdnFormchkboxes').attr('value') != '') {
            var hdnFormcheckedvals = $('#hdnFormchkboxes').attr('value');
            var values = JSON.parse(hdnFormcheckedvals);

            var container = document.querySelector('.ddlchkProfessionCheckboxes');
            const checkboxes = container.querySelectorAll('input[type="checkbox"]');               

            checkboxes.forEach(checkbox => {
                if (values.includes(parseInt(checkbox.value))) {
                    checkbox.checked = true;
                }
            });
        }
jquery checkbox bootstrap-5 multi-select
1个回答
0
投票

values
是一个对象数组,您需要从中提取
formLookupId
属性。

var values = JSON.parse(hdnFormcheckedvals).map(el => el.formLookupId);
© www.soinside.com 2019 - 2024. All rights reserved.