2010-03-25 2 views
2

Я хотел найти способ загрузить один файл *, в фоновом режиме, запустить его автоматически после выбора файла и не требовать загрузчика Flash, поэтому я пытаюсь использовать два больших механизмы (jQuery.Form и JQuery MultiFile) вместе. Мне это не удалось, но я уверен, что это потому, что я пропустил что-то фундаментальное.Программная подача формы при использовании AjaxForm

Только с помощью Многофайловое, я определяю форму следующим образом ...

<form id="photoForm" action="image.php" method="post" enctype="multipart/form-data"> 

Кнопка входного файла определяется как ...

<input id="photoButton" "name="sourceFile" class="photoButton max-1 accept-jpg" type="file"> 

И Javascript является ...

$('#photoButton').MultiFile({ 
    afterFileSelect: function(){ 
     document.getElementById("photoForm").submit(); 
    } 
}); 

Это прекрасно работает. Как только пользователь выбирает один файл, MultiFile отправляет форму на сервер.


Если вместо того, чтобы использовать Многофайловое, как показано выше, скажем, я включаю кнопку Submit вместе с плагином JQuery форма определяется следующим образом ...

var options = { 
    success: respondToUpload 
}; 

$('#photoForm').ajaxForm(options); 

... это также отлично работает , При нажатии кнопки «Отправить» форма загружается в фоновом режиме.


То, что я не знаю, как это сделать, - заставить эти два работать вместе. Если я использую Javascript для отправки формы (как показано в примере MultiFile выше), форма отправляется, но функция JQuery.Form не вызывается, поэтому форма не представляется в фоновом режиме.

Я подумал, что, может быть, мне нужно, чтобы изменить форму регистрации следующим образом ...

$('#photoForm').submit(function() { 
$('#photoForm').ajaxForm(options); 
}); 

... но это не решило проблему. То же самое верно, когда я пытался .ajaxSubmit вместо .ajaxForm.

Что мне не хватает?

  • BTW: Я знаю, что может показаться странным использование MultiFile для однофайловых загрузок, но идея состоит в том, что количество файлов будет динамическим на основе учетной записи пользователя. Итак, я начинаю с одного, но число меняется в зависимости от условий.

ответ

1

Ответ оказывается неловко простым.

Вместо того, чтобы программно представления, используя ...

document.getElementById("photoForm").submit(); 

... Я ...

$("#photoForm").submit(); 

Кроме того, так как мне нужно только для загрузки нескольких файлов на случай, Я использовал более простой метод ...

1) Форма такая же, как у моего оригинала ...

<form id="photoForm" action="image.php" method="post" enctype="multipart/form-data"> 

2) Поле ввода файла в основном то же самое ...

<input id="photoFile" "name="sourceFile" style="cursor:pointer;" type="file"> 

3) При изменении входного файла поля, Представлять выполняется ...

$("#photoFile").change(function() { 
    $("#photoForm").submit(); 
}); 

4) Слушатель AjaxForm делает свою вещь ...

var options = { 
    success: respondToUpload 
}; 
$('#photoForm').ajaxForm(options);