Contact ME!





本文介绍如何使用 javascript 将用户在主表单中填写的多个字段(如姓名、邮箱、电话、消息)自动汇总并注入到隐藏的 formspree 表单中,再触发提交,从而绕过 formspree 对字段数量的限制。
在实际开发中,Formspree 默认仅支持直接提交 和
但原始代码存在几个关键问题,导致提交失败:
✅ 正确实现方式如下:
Contact ME!
? 提示:使用 position: absolute; left: -9999px; opacity: 0; 比 hidden 属性更可靠(兼容性好,且确保表单仍可提交),同时避免 display: none 可能导致部分浏览器阻止提交。
document.getElementById('firstForm').addEventListener('submit', function(e) {
e.preventDefault();
const emailVal = document.getElementById('email').value.trim();
const nameVal = document.getElementById('name').value.trim();
const phoneVal = document.getElementById('phoneno').value.trim();
const messageVal = document.getElementById('message').value.trim();
// 拼接完整消息(用真实换行符 \n)
const fullMessage = [
`Name: ${nameVal}`,
`Phone: ${phoneVal}`,
`Message: ${messageVal}`
].filter(line => line.includes(': ')).join('\n'); // 过滤空行,提升可读性
// 注入到隐藏表单
document.getE
lementById('email1').value = emailVal;
document.getElementById('message1').value = fullMessage;
// 提交 Formspree 表单
document.getElementById('secondForm').submit();
});通过以上结构化改造,即可稳定实现「多字段收集 → 单表单提交」的无缝衔接,既满足用户体验,又完全兼容 Formspree 的免费工作流。