可通过遍历form.elements或使用formdata获取表单值:前者需手动处理disabled、checked及multiple;后者更简洁,天然遵循提交规则,但同名字段需手动聚合为数组。

可以通过遍历表单内所有 <input>、<textarea></textarea> 和 <select></select> 元素,提取它们的 value 属性来获取所有输入框的值。关键在于正确选择元素、区分控件类型,并处理禁用(disabled)或未选中(如 checkbox/radio)的情况。
使用 form.elements 遍历原生表单元素
form.elements 是一个只读的 HTMLFormControlsCollection,包含表单内所有可提交的控件(input、textarea、select、button),比 querySelectorAll 更语义化且自动排除非表单控件:
- 遍历时跳过
disabled元素(它们不会提交,通常也不应计入) - 对
checkbox和radio,只取checked === true的值 - 对
select[multiple],需用selectedOptions获取多个选中项
示例代码:
const form = document.querySelector('#myForm');
const values = {};
for (const el of form.elements) {
if (!el.name || el.disabled) continue;
const { name, type, value } = el;
if (type === 'checkbox' || type === 'radio') {
if (!el.checked) continue;
values[name] = value;
}
else if (type === 'select-multiple') {
values[name] = Array.from(el.selectedOptions).map(opt => opt.value);
}
else {
values[name] = value;
}
}
console.log(values); // { username: "admin", agree: "on", tags: ["js", "web"] }
用 FormData 快速获取键值对(推荐用于提交场景)
如果目标是获取可直接提交的数据(例如发给后端),FormData 是最简洁可靠的方式,它天然遵循表单提交规则(忽略 disabled、只取 checked、支持文件、自动处理多选):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 构造
new FormData(form)即可捕获当前有效值 - 用
Object.fromEntries(new FormData(form))转为普通对象(注意:多选select或多个同名checkbox会被最后一个覆盖) - 如需保留数组形式,手动遍历
FormData实例:
const formData = new FormData(form);
const values = {};
for (const [name, val] of formData.entries()) {
if (!values[name]) {
values[name] = val;
} else if (Array.isArray(values[name])) {
values[name].push(val);
} else {
values[name] = [values[name], val];
}
}
注意 name 属性和重复键的处理
表单控件必须有 name 属性才能被收集;若多个控件使用相同 name(如一组 checkbox),需按数组方式聚合值:
- 单个
input name="hobby"→ 字符串 - 多个
input type="checkbox" name="hobby"→ 应收集所有勾选项为数组 -
select multiple name="city"→ 多选时也返回数组
建议统一用 Map 或对象 + 数组逻辑处理,避免丢失数据。
补充:获取实时输入值(监听变化)
如果需要在用户输入时动态获取,不要依赖 submit 事件,而是绑定 input 或 change 事件:
-
input:适用于text、textarea等,实时响应 -
change:适用于select、checkbox、radio,更稳妥
可结合 debounce 防抖,避免频繁触发。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










