我有一个带有文件名和复选框的表单,它来自已预先填充的服务器。我的表单应该更新复选框。
我在JavaScript中有代码,用于选择行并尝试使用每行复选框中的更新值构建键值对象。
当选择器设置为仅返回已检查的选择器时,字典会完美地构建,但我还想将可能已经勾选的条目添加到字典中。
当我使选择器选择所有行(包括未定义checked属性的位置)时,字典根本不会被填充。
这是我的输入元素:
<input type="checkbox" name="Map" data-id="@file.FileId" checked="checked" class="auto-accept-checkbox" />
以下是javascript代码段:
var map = {};
$("#shareable-file-settings-form table tr").each(function () {
map[$(this).attr('data-id')] = $(this).attr('checked') === 'checked';
});
我逐项尝试了控制台,我的右手操作数表达式在那里工作!当选择器被修改时,我不知道为什么那种外观会像那样(在字典中没有放任何东西)行为不正常
从:
"#shareable-file-settings-form table tr :checked"
为:
"#shareable-file-settings-form table tr"
答案 0 :(得分:3)
就像乔说的那样,你选择了tr
元素,而不是内部的input[type=checkbox]
。首先,将选择器更改为
"#shareable-file-settings-form table tr input[type=checkbox]"
此外,&#34;检查&#34;复选框上的属性是HTML属性,而不是属性。此外,您可以使用jQuery的.data()
方法访问id
数据属性。
您可以将其更改为
map[$(this).data('id')] = $(this).prop('checked');