2014-07-15 11 views
7

Używam wtyczki jpuery BlueQp (wersja podstawowa) i mam problem. Przesyłanie pierwszego pliku działa zgodnie z oczekiwaniami, ale gdy chcę wysłać inny plik, to nie działa.Blueimp's jQuery-File-Upload Drugi problem z przesyłaniem plików

fileinput.fileupload({ 
      dataType: 'json', 
      done: function (e, data) { 
       $.each(data.result.files, function (index, file) { 
        //do stuff with files 
       }); 
      } 
     }).bind('fileuploadadd', function (e, data) { 
      data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
      data.submit(); 

     }); 

EDIT:

Ok wiem, co jest przyczyną problemu. Ale nie wiem, jak to naprawić. Użyłem wtyczki fileupload na wejściu, które ustawiło brak wyświetlania. Wywołuję go innym przyciskiem, który wykorzystuje metodę click()/trigger ("kliknięcie") na ukrytych danych wejściowych. pierwszy trigger działa dobrze, ale drugi uruchamia okno wyboru pliku. Po wybraniu nic się nie dzieje. Kiedy używam pola wejściowego bezpośrednio, działa tak, jak powinien. Jak pokonać ten problem?

+1

Mam tę samą koncepcję i te same objawy. Wygląda na to, że brutalnym rozwiązaniem jest 'fileupload ('destroy')' i ponowne zastosowanie po każdym zdarzeniu ajax' done'. Czy rozwiązałeś to w inny sposób? – vatavale

Odpowiedz

5

Problem pojawia się, ponieważ jQuery File-Upload klon i zastąpić pole wprowadzania po każdym przesyłania (docs) .

Wyzwalanie zdarzenia click na starym znaczniku wejściowym pliku, który nie działa.

Aby rozwiązać ten problem masz co najmniej dwie opcje:

  1. wyzwalania click zdarzenia na nowy plik-wejście po każdym blueimp add wydarzenie.

  2. Użyj replaceFileInput: false na konfiguracji wtyczki (w niektórych przeglądarkach będzie to ulegało degradacji w przypadku UX-a). (docs)

0

trudno jest odpowiedzieć, ponieważ nie ma wystarczająco dużo informacji, ale coś takiego może działać:

function test() { 

    fileinput.fileupload({ 
     dataType: 'json', 
     done: function (e, data) { 
      $.each(data.result.files, function (index, file) { 
       //do stuff with files 
      }); 
     } 
    }).bind('fileuploadadd', function (e, data) { 
     data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
     data.submit(); 
     test(); 
    }); 

} 

test(); 
+0

Próbowałem tego i niestety to nie pomogło. –

+0

Zakładam, że nie wiem, jak działa twoja strona internetowa. – peterpeterson

+1

Czy podstawowa wersja wtyczki wymaga sformalizowanej odpowiedzi json? –

Powiązane problemy