我正在处理一些遗留的 HTML/JavaScript。有些是我可以控制的,有些是从我无法控制的地方产生的。
有一个带有隐藏字段的动态生成的表单。表单本身是通过 Velocity 模板 (Percussion Rhythmyx CMS) 生成的,JavaScript 会插入额外的隐藏表单字段。最终结果是使用相同的“名称”属性生成隐藏的表单字段。数据被发布到我知之甚少的 Java/JSP 服务器端代码。
我知道共享相同“名称”属性的表单字段是有效的。由于某种原因,POSTed 数据未被后端识别。 当我检查 POST 字符串时,同名键都不包含任何数据。
如果我在我的开发环境中操作代码,使得给定名称仅存在一个输入字段,则数据会正确发布到后端。问题不一致,有时,它工作得很好。
我能做些什么来保证数据会被发布吗?有谁能想出它不会的原因吗?
I should really update my answer and post code here, because POST requests without
variable strings indicates the problem is on the client side.
最佳答案
这个怎么样:
<script type="text/JavaScript">
function disableBlankValues()
{
var elements = document.getElementById("form1").elements;
for (var i = 0; i < elements.length; i++)
{
if (elements[i].value == "")
elements[i].disabled = true;
}
}
</script>
<form action="page.php" method="POST" onsubmit="disableBlankValues()" id="form1">
<input type="hidden" name="field1" value="This is field 1."/>
<input type="hidden" name="field1" value=""/>
</form>
编辑
我现在意识到实际问题(多个同名变量应该作为数组传递给 JSP),我的解决方案可能不是 OP 正在寻找的,但我将它留在这里以防万一帮助偶然发现这篇文章的其他人。
关于javascript - 具有相同 'name' 属性的多个表单字段未发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081085/