Загрузка файла через скрытый iFrame - проблема с вложенностью формы - PullRequest
2 голосов
/ 25 октября 2010

Я предполагаю, что это скорее вопрос JavaScript / jQuery / DOM, чем вопрос Rails, но это все из-за того, как я реализовал его в Rails.

Я пытаюсь загрузить файлы при создании новогообъект (аукцион).Хотя пользователь вводит некоторые данные, он также должен иметь возможность загружать несколько фотографий.

Основная проблема заключается в том, что файлы должны быть загружены при заполнении формы.Форма является вкладкой, поэтому фотографии находятся на вкладке 3 из 5, и все вкладки находятся в общей форме создания.Это означает, что форма загрузки должна быть (позиция DOM) внутри главной формы для создания объекта, что не разрешено спецификацией HTML.

Чтобы избежать вложенности форм, я пытался jQuery.clone ()поле файла при первой отправке фотографии, поэтому я могу создать форму для загрузки на лету - но это не сработало, поскольку JS, похоже, не может получить доступ к значению поля файла.

Таким образом, мой вопрос: как я могу реализовать такую ​​штуку «отправить форму в скрытый iframe», когда я не могу избежать размещения формы только для загрузки в другой форме, с точки зрения DOM?Кто-нибудь знает хороший намек или что-то?

Заранее спасибо за помощь

Арне

1 Ответ

3 голосов
/ 25 октября 2010

Хорошо, если у вас есть одна форма, вы можете сделать следующее:

  • Установите цель вашей формы так, чтобы она указывала на имя Ифрама. 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...