如何在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
我该给该领域什么?据我所知,每个名字都应该是独一无二的。我可以给它们命名,例如file1
和file2
,但是在服务器端我必须遍历所有可能的名称,直到我发现该字段不再存在。难道没有办法提供一个带有表单的列表吗?
@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 集合中?