2012-04-12 10 views
5

Ho un'applicazione html5 che utilizza l'API del file, utilizzando un elemento. Sono in grado di rispondere quando l'utente seleziona un file. Mi piacerebbe essere in grado di fare qualcosa se l'utente annulla la scelta del file. Tuttavia, non riesco a trovare alcun evento che viene attivato sull'elemento di input se l'utente fa clic sul pulsante Annulla anziché su OK nel dialogo di selezione dei file.Cattura evento di annullamento sul tipo di input = file

C'è qualche evento sparato su "cancel" che mi manca, o dovrei riorganizzare la mia app per non averne bisogno?

risposta

0

non c'è davvero un ascoltatore per verificare se è stato selezionato un file, si potrebbe ottenere intorno ad esso impostando una nota nel codice utilizzando l'evento di modifica su questo modo:

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

When utente fa clic cancella, cambia di nuovo i trigger degli eventi. Questo funziona per me;

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

Quali browser generano un evento di modifica sull'annullamento del file? Non funziona per me. –

+0

@ E-D non funziona anche su Safari –

+0

per ulteriori spiegazioni: Questo comando funziona solo per il browser Google Chrome. - ** E questo è normale ** - Google Chrome ha passato la policromia per consentire all'utente di scegliere di eliminare il file, e non solo di cancellare il''browse ... '- È una questione di ** browser di politik ** altri solo devi cancellare il clic. Il nome file visualizzato nel tipo di input del file è coerente a seconda dei browser. Ad una cancellazione di google chrome rimuove il file e il nome file nel file del tipo di input mentre altri non fanno nulla. Ecco. – maliness

0

Ho la stessa domanda, la soluzione è sorprendentemente molto facile ... almeno nel mio caso NW.js (Node-Webkit) spara OnCancel evento se l'utente clicca sul pulsante [Annulla] nel selettore di file dialogo. Si utilizza questo modo semplice e nativo se si è anche su NW.js (process.version è v5.11.0).

Ho anche provato Microsoft HTA su Windows 10, non si attiva l'evento oncancel.

Problemi correlati