通过隐藏的iFrame上传文件 - 形成嵌套问题

时间:2010-10-25 15:21:11

标签: jquery ruby-on-rails forms html5 file-upload

我认为这是一个JavaScript / jQuery / DOM问题,而不是Rails问题,但这都归功于我在Rails中实现它的方式。

我正在尝试在创建新对象(拍卖)时上传文件。当用户输入一些数据时,他还可以上传多张照片。

主要问题是,填写表单时应上传文件。表单是一个选项卡,因此照片位于第3页,共5页,所有选项卡都位于整个创建表单中。这意味着,上传表单必须是(DOM位置)在主表单中用于创建对象,这是HTML规范不允许的。

为了避免嵌套表单我首先提交照片时尝试使用jQuery.clone()文件字段,因此我可以动态创建上传表单 - 但这不起作用,因为JS似乎不是能够访问文件字段的值。

所以我的问题是:当我无法避免从DOM的角度将上传表单放在另一个表单中时,我怎么能实现这样一个“提交表单到隐藏的iframe”呢?有没有人知道一个好的暗示或什么?

提前感谢您的帮助

·阿尔

1 个答案:

答案 0 :(得分:3)

好的,假设您有一个表单,您可以执行以下操作:

  • 将表单的目标设置为指向Iframe的名称。文件上传的POST将在后台进行,定位为Iframe。
  • 在表单提交后,使用window.setTimeout(function() {document.form1.target=''},1)清除目标。
  • 继续正常使用表格。

如果您有多个表单,那么当然会更容易一些,这样您就可以将文件上传表单单独指向该目标。

编辑 - 试试这个:

<form id="upload-form" target="myiFrame"><input type="file" /></form>
<form action="/model/create"></form>
<iframe name="myiFrame" src="/model/upload"></iframe>