Сбой при работе с двумя формами в jQuery

#jquery

#jquery

Вопрос:

Я хочу написать программу загрузки файлов jQuery, используя этот плагин http://aquantum-demo.appspot.com/file-upload Несмотря на то, что этот плагин действительно хорош, я столкнулся с проблемой.

Вот что я сделал: я разработал форму, в которой для загрузки графики используется плагин, указанный выше. Однако для этого подключаемого модуля также требуется форма для активации PHP.

Выдержка из программы:

 <form action="" method="get">
<--This layer probably needs other form information ex: name, telephone no....etc !-->
   <form action="upload.php" method="POST" enctype="multipart/form-data">
        <div class="fileupload-buttonbar">
            <label class="fileinput-button">
                <span>Add files...</span>
                <input type="file" name="files[]" multiple>
            </label>
            <button type="submit" class="start">Start upload</button>
            <button type="reset" class="cancel">Cancel upload</button>
            <button type="button" class="delete">Delete files</button>
        </div>
    </form>
</form>    
  

Я знаю, что неисправность вызвана двумя формами, если да, есть ли какой-либо способ это исправить?
Или есть лучшие способы отправки форм? Пожалуйста, ПОМОГИТЕ мне! Спасибо, ребята!

Ответ №1:

Проблема в том, что у вас есть вложенные формы. Не используйте вложенные формы. Их поведение не определено.

Глядя на ваш код, неясно, зачем вам вообще нужна первая форма. Он не имеет никакого действия и поэтому, похоже, ничего не делает. Есть ли причина, по которой вы не можете включить элементы управления загрузкой файлов в существующую форму?

Если вы не можете, вы можете сделать одну из двух вещей:

  • Не предоставляйте кнопку отправки для формы загрузки файла. Добавьте обработчик отправки в контактную форму. В этом обработчике вы можете явно запустить событие отправки в форме загрузки файла. Этот метод требует меньше работы на интерфейсе, но у вас есть два явных представления, и поэтому вам, вероятно, понадобится код на серверной части, чтобы выяснить, какие файлы связаны с какими контактами.
  • В форме загрузки файла есть скрытые поля, которые совпадают с полями в вашей контактной форме. Не предоставляйте обработчик отправки для контактной формы. Добавьте обработчик отправки в форму загрузки файла. В этом обработчике вы можете копировать значения из контактной формы в скрытые поля формы загрузки файла. Этот метод требует больше работы на интерфейсе, но вы отправляете все за один раз, и поэтому вам не нужно выполнять дополнительную работу на серверной части, чтобы выяснить, какие файлы отправляются с каким контактом. В целом я думаю, что этот метод проще.