Плагин загрузки формы Jquery: как уменьшить его до одного клика? - PullRequest
0 голосов
/ 20 августа 2011

Я использую плагин формы jquery для обработки загрузки файлов,

Это моя форма,

    <form action="upload.php" method="post" enctype="multipart/form-data" id="myForm">
  <input type="file" multiple="multiple" name="file[]" />
  <input type="submit" name="upload" value="Submit"/>
</form>
<div id="output"></div>    

jquery,

    $('#myForm').submit(function() {

        $(this).ajaxSubmit({
        target: '#output'
        });

        return false;

   });

Откат этой идеи заключается в том, что вам нужно нажать дважды перед загрузкой файлов - вы должны нажать просмотреть файлы и затем нажать submit Кнопка.

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

Возможно ли это?

Еще одно замечание: почему это происходитне работает в Chrome, IE и Safari (работает только в Firefox и Opera) - форма будет отправлена ​​в этих браузерах, но я уже установил submit() в return false?

Ответы [ 2 ]

0 голосов
/ 20 августа 2011
$('input[type=file]').change(function() {
    var vals = $(this).val(),
        val = vals.length ? vals.split('\\').pop() : '';
    alert("value changed submit the form here");
    $('input[type=text]').val(val);
});

http://jsfiddle.net/CSvjw/82/

0 голосов
/ 20 августа 2011

Вам потребуется настроить обработчик событий на входе, который обрабатывает файл, и связать его с «измененным» обработчиком событий.Таким образом, когда пользователь изменяет имя файла, вызываемая функция может видеть, существует ли файл, и затем автоматически отправлять форму.

«Способ Jquery» для предотвращения события по умолчанию: event.preventDefault().Вероятно, это равно return false, однако при его использовании у меня никогда не было проблем.Другое дело, что у вас в браузерах возникает ошибка скрипта, которая не позволяет вернуть false.Вы можете сделать это, изменив свой обработчик событий, чтобы он выглядел следующим образом

    function(event)  {
       event.preventDefault();
       // Do stuff here
    }
...