ESP32网页服务器表单:如何让FormData存储select与time输入值?
解决FormData无法获取值的问题
FormData收集表单数据的核心规则是:只有带name属性的表单元素,才会被纳入FormData对象。你遇到的问题大概率是<select>和<input type="time">没有设置name属性,导致这些元素被自动忽略。
修复步骤:
给所有
<select>标签添加name属性
比如原来的代码如果是:<select id="tankType"> <option value="1">水箱A</option> <option value="2">水箱B</option> </select>改成:
<select id="tankType" name="tankType"> <option value="1">水箱A</option> <option value="2">水箱B</option> </select>给所有
<input type="time">标签添加name属性
比如原来的代码:<input type="time" id="schedule1">改成:
<input type="time" id="schedule1" name="schedule1">
验证方法:
修改后可以用遍历FormData的方式确认所有字段都被正确收集:
const form = document.getElementById('your-form-id'); const formData = new FormData(form); // 打印所有表单键值对 for (const [key, value] of formData.entries()) { console.log(`${key}: ${value}`); }
额外排查点:
- 如果元素设置了
disabled属性,FormData也会跳过它,确保这些元素没有被禁用 - 确认
<input type="time">的输入格式符合规范(即使格式不合法,只要有name,FormData依然会收集输入值)
内容的提问来源于stack exchange,提问作者vram
相关产品推荐
相关产品推荐

