gpt4 book ai didi

javascript - 2 个 Html 表单如何共享 1 个隐藏字段?

转载 作者:行者123 更新时间:2023-11-28 04:02:24 25 4
gpt4 key购买 nike

我有一个包含 2 个表单的页面和一个位于两个表单之外的隐藏字段。

如何使用任一表单提交隐藏字段?

我想用 jQuery 做这样的事情:

<script type="text/javascript">
$(function() {
$('form').submit(function() {
// do something to move or copy the
// hidden field to the submitting form
});
});
</script>

这行得通吗?还有其他想法吗?

编辑

隐藏字段存储一个不会改变的序列化对象图。两种服务器方法都需要该对象。序列化对象字符串可能会变得非常大,所以我不希望这个东西从服务器发送 2 次。

最佳答案

您可以在提交之前简单地将元素的副本注入(inject)每个表单。这样,您可以选择为每个隐藏的表单字段提供不同的信息,而不会影响其他字段。


像这样:

<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 来执行此操作,或者发送另一个请求来删除它。

不过,老实说,除非您非常反对(!!),否则我认为通过仅提交一次来存储它比简单地向服务器发送两个请求要复杂得多。

如果您有任何其他问题,请告诉我...

关于javascript - 2 个 Html 表单如何共享 1 个隐藏字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com