我将一些 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;
}
});
}
values
是一个对象数组,您需要从中提取formLookupId
属性。
var values = JSON.parse(hdnFormcheckedvals).map(el => el.formLookupId);