您可以在提交之前将元素的副本简单地注入到每个表单中。这样,您可以选择为每个隐藏的表单字段提供不同的信息,而不会影响另一个。
像这样的东西:
<script type="text/javascript">
$(function() {
$('form').submit(function() {
$("#hidden_element").clone().appendTo(this);
});
});
</script>
如果您想在不创建新副本的情况下对两个表单使用完全相同的元素,请不要使用clone()
请参阅clone()和appendTo()的文档
编辑:
如果您不想在表单发送的每个请求中都发送隐藏元素。考虑将其存储在该用户的数据库中。您可以提交其内容一次,并且仅在每次重新加载页面时提交一次,然后只需在每个表单帖子中发送隐藏元素的数据库 ID。
在页面加载时,如下所示:
$.post("page.php", { reallyBigObject : $("#hiddenfield").val() }, function(insertedID){
$("#hiddenfield").val(insertedID);
});
然后,在服务器端代码中:
//insert $_POST["reallyBigObject"] into databse
//get the just inserted id (in php it's done with mysql_insert_id())
//echo, or print the just inserted id, and exit
这样你的 js 就会得到回调。
现在,您可以按照自己的方式提交表单,但是这一次,您只是将 id(整数)发送到服务器。然后,您可以简单地从服务器中删除该对象(在 X 时间后运行一个 cron 来执行此操作,或者发送另一个请求来删除它。
不过,老实说,除非您的对象是 HUGE(!!),否则我认为通过仅提交一次来存储它比简单地向服务器发送两个请求要复杂得多。
如果您还有其他问题,请告诉我...