javascript - 以编程方式选中复选框以提交网络表单

标签 javascript html forms

不幸的是,仍有一些表格没有实现批量/批量编辑。这可能会非常烦人,尤其是当您的表单中包含超过 100 条要更新的记录时。在我的例子中,大约有 1000 条记录,每条记录都有一个复选框,应该选中哪些内容,目前它们都未选中。

因此,我尝试运行一段动态的 javascript 来为我检查这些框。但是,在运行 javascript 后,它确实在所有复选框处显示了一个复选标记。提交表单后,第一个未选中的复选框 - 显示为选中的复选框 - 返回到原始状态(未选中)。

我从 FireFox 的控制台执行的即时 javascript。

var x = document.querySelectorAll('input[name^="example"][type="checkbox"]'), i = 0;
for (i = 0; i < x.length; i++) {
    x[i].checked = true;
    x[i].value = true; // I also tried 'on'
}

复选框(手动)选中和未选中的初始标记:

<input name="example[1]" checked="" type="checkbox">
<input name="example[2]" type="checkbox">

据我所知,checked 属性仅用于可视化表示,允许程序员在元素初始化时显示选中框。还需要注意的是,当您取消选中复选框时,元素不会更改。

我使用的方法是否正确?如果是这样,那我做错了什么?或者我必须使用不同的方法来实现我的目标,我应该怎么做?

最佳答案

尝试使用以下内容:-

x[i].setAttribute('checked', 'checked');

如果您在运行原始代码后检查输入,您会看到它只设置了 value 属性

<input name="example[2]" type="checkbox" value="true">

这与您手动单击复选框的 html 不同,后者已设置 checked 属性。

关于javascript - 以编程方式选中复选框以提交网络表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637934/

相关文章:

javascript - 预防点击劫持的最佳实践 : What if javascript is disabled?

javascript - 输入标签不拾取低于 20px 的宽度

javascript - 让 chrome、IE 8 和 Firefox 提交相同表单的奇怪方法

javascript - 如何正确构建嵌套的 JSON 值?

javascript - .select() 在 Chrome 中无法正常运行

javascript - 如何修复表格元素的位置 Angular.js

jquery - HTML5 输入类型数字在 "9"之后出现奇怪的行为

javascript - 如何创建简单的自动代码生成器?

javascript - AngularJS:显示通过 http GET(来自 REST 服务)检索的 JSON 数据的选择框

html - Bootstrap 多个下拉按钮无法正确显示