如何在Javascript中将隐藏的ID列表添加到表单中?

Posted

技术标签:

【中文标题】如何在Javascript中将隐藏的ID列表添加到表单中?【英文标题】:How to add a hidden list of IDs to a form in Javascript? 【发布时间】:2014-12-25 08:08:00 【问题描述】:

我有一个简单的 html 表单:

<form action="" method="post">
    <input id="title" name="title" size="30" type="text" value="">
    <input type="submit" value="Save this stuff">
</form>

我在页面上还有一个文件上传,它使用 ajax 处理上传并将文件添加到 mongoDB。文件上传返回文件的 mongoDB id(例如12345),我想将该 id 作为隐藏字段添加到表单中,以便在提交表单时将该 id 发布到服务器。由于用户可以添加多个文件,我想在表单中添加一个 id 列表。

我找到了add one hidden field to a form from javascript 的方法,但这总是处理单个字段,而不是具有多个值的字段。所以我想在表单中添加一个复选框字段,以便我可以在一个元素中提交多个值,但这有点像 hack。

谁能提示我如何使用 Javascript 向表单添加隐藏的值列表?欢迎所有提示!

[编辑] 最后,我希望表单看起来像这样:

<form action="" method="post">
    <input type="hidden" name="ids" value="[123, 534, 634, 938, 283, 293]">
    <input id="title" name="title" size="30" type="text" value="">
    <input type="submit" value="Save this stuff">
</form>

【问题讨论】:

很抱歉,我不明白您所说的文件 ID 是什么意思?或者您可以制作一个包含 2-3 个项目的表单示例,就像您想要的那样? 添加多个隐藏字段,每个文件一个有什么问题? @WoodrowBarlow - 那么name 我该给该领域什么?据我所知,每个名字都应该是独一无二的。我可以给它们命名,例如file1file2,但是在服务器端我必须遍历所有可能的名称,直到我发现该字段不再存在。难道没有办法提供一个带有表单的列表吗? @Shaeldon - 我添加了一些说明,我所说的 id 是什么意思。我将文件存储在 mongodb 中,并通过上传返回一个想法。然后,我想将该 ID 添加到表单中的文件 ID 列表中。但我不知道如何添加一个包含 valuea 列表的隐藏字段,而不仅仅是一个值。 【参考方案1】:

我不确定我是否正确理解了你的问题,所以我可能只是在这里猜测。

尝试添加多个名称为 ids[] 的隐藏输入,以便将它们作为数组发布到服务器。

例子:

<form action="" method="post">
    <input type="hidden" name="ids[]" value="123">
    <input type="hidden" name="ids[]" value="534">
    <input type="hidden" name="ids[]" value="634">
    <input type="hidden" name="ids[]" value="938">
    <input type="hidden" name="ids[]" value="283">
    <input type="hidden" name="ids[]" value="293">
    <input type="submit" value="Save this stuff">
</form>

【讨论】:

赞成,这是提交多个值的标准方式。【参考方案2】:

您的意思是每次用户单击“上传”按钮时,您都需要在表单中添加一个隐藏字段? 你能把整个表格贴出来吗,那应该可以解决问题了...

[编辑] 您可以将 id 存储在数组中,每次应将 id 添加到隐藏字段的值时,您可以执行以下操作: $('#ids').attr('value', idArray.join());

我只是开箱即用地输入这个,所以请原谅任何小错误

【讨论】:

我添加了一个示例,说明我希望表单最终看起来如何。表格里有这样的东西吗?【参考方案3】:

为什么不简单地将所有 id 连接成一个字符串,如“123,456,890,..etc”,然后将它们作为值添加到 ids inupt。当你需要它们时,只需用 ',' 分割,这会给你一个带有 id 的数组吗?

Todo 只能使用 javascript,这样的东西应该可以工作

var elem = document.getElementById("ids");
elem.value = elem.value + "," + newId;

【讨论】:

以上是关于如何在Javascript中将隐藏的ID列表添加到表单中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中将 File 对象添加到 FileList 集合中?

如何在 JavaScript 中将字符串转换为布尔值?

如何在后面的c#代码中将div添加到容器div

如何在 zeppelin 中将数组从 spark 绑定到 javascript?

如何在 SwiftUI 中将内容添加到收藏列表?

如何在swiftUI中将背景颜色添加到列表中