2012-04-12 11 views
5

Mam aplikację html5, która korzysta z interfejsu API pliku, używając elementu. Jestem w stanie odpowiedzieć, gdy użytkownik wybierze plik. Chciałbym móc coś zrobić, jeśli użytkownik anuluje wybór pliku. Jednak nie mogę znaleźć zdarzenia, które zostanie wywołane w elemencie wejściowym, jeśli użytkownik kliknie przycisk anulowania zamiast OK w oknie wyboru pliku.Przechwytywanie zdarzenia anulowania na typie wejściowym = plik

Czy jest jakieś zdarzenie wystrzelone z "anulowania", którego mi brakuje, czy powinienem ponownie zaprojektować aplikację, aby tego nie potrzebować?

Odpowiedz

0

Tam naprawdę nie jest słuchaczem, aby sprawdzić, czy został wybrany plik, można obejść poprzez ustawienie notatkę w kodzie za pomocą zmian na razie tak:

var FileChoosen = false; 

var inputElement = document.getElementById("inputField"); 
inputElement.addEventListener("change", handleFiles, false); 
function handleFiles() { 
    var fileList = this.files; /* now you can work with the file list */ 


    //Check if the layout was changed from file API: 
    if(document.getElementById('fileOutput').innerHTML != "") { 
    FileChoosen = true; 
    setTimeout("funcCalledToCheckUserSelection()", 500); 
    }; 


} 
3

gdy użytkownik kliknie anuluj, zmień wyzwalacze zdarzeń ponownie. To działa dla mnie;

 $('#attachedFiles').bind("change", function() { 
      var file = this.files[0]; 
      if (file) { 
       // if file selected, do something 
      } else { 
       // if user clicks 'Cancel', do something 
      } 
     }); 
+5

Które przeglądarki powodują zmianę zdarzenia przy wprowadzaniu danych? Nie działa dla mnie. –

+0

@ E-D nie działa również w Safari pod numerem –

+0

, aby uzyskać więcej informacji: To polecenie działa tylko w przeglądarce Google Chrome. - ** I to jest normalne ** - Google Chrome przeszedł przez polifoniczne, aby pozwolić użytkownikowi wybrać usunięcie pliku, a nie tylko anulować - 'browse ...' - To kwestia ** przeglądarek policalowych ** innych po prostu muszą anulować kliknięcie. Nazwa pliku wyświetlana w typie pliku wejściowego jest zgodna w zależności od przeglądarki. W chrome chrome anulowanie usuwa plik i nazwę pliku w pliku typu wejściowego, podczas gdy inni nie robią nic. Voilà. – maliness

0

Mam to samo pytanie, rozwiązanie jest zaskakująco bardzo proste ... przynajmniej w moim przypadku NW.js (Node-Webkit) odpala onCancel zdarzenie jeśli użytkownik kliknij przycisk [Anuluj] w oknie wyboru pliku dialog. Używasz tego prostego i natywnego sposobu, jeśli używasz NW.js (process.version to v5.11.0).

Próbowałem również Microsoft HTA na Windows 10, nie uruchamia oncancel zdarzenia.

Powiązane problemy