2012-04-12 14 views
5

Tengo una aplicación html5 que hace uso de la API del archivo, utilizando un elemento. Puedo responder cuando el usuario selecciona un archivo. Me gustaría poder hacer algo si el usuario cancela la elección del archivo. Sin embargo, no puedo encontrar ningún evento que se dispare en el elemento de entrada si el usuario hace clic en el botón cancelar en lugar de en el diálogo del selector de archivos.Capturar cancelar evento en el tipo de entrada = archivo

¿Hay algún evento activado en 'cancelar' que me falta, o debería volver a diseñar mi aplicación para que no lo necesite?

Respuesta

0

no hay realmente un oyente para comprobar si se ha seleccionado un archivo, se puede conseguir alrededor de él mediante el establecimiento de una nota en su código utilizando el evento de cambio de este 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

Cuándo usuario hace clic cancelar, cambiar desencadenantes de evento de nuevo. Eso es bueno para mi;

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

¿Qué navegadores lanzan un evento de cambio al cancelar la entrada del archivo? No funciona para mi –

+0

@ E-D no funciona en Safari también –

+0

para obtener más explicaciones: Este comando solo funciona para el navegador Google Chrome. - ** Y esto es normal ** - Google Chrome aprobó la política para permitir que el usuario elija eliminar el archivo, y no simplemente cancelar el'browse ... '- Es una cuestión de ** navegadores policals ** otros simplemente tiene que cancelar el clic. La visualización de nombre de archivo en el tipo de entrada de archivo es consistente dependiendo de los navegadores. En una cancelación de google cromo, se eliminan el archivo y el nombre de archivo en el archivo de tipo de entrada, mientras que otros no hacen nada. Voilà. – maliness

0

que tienen la misma cuestión, la solución es sorprendentemente muy fácil ... al menos en mi caso NW.js (Nodo en Webkit) dispara OnCancel caso si el usuario haga clic en el botón [Cancelar] en el selector de archivos diálogo. Utiliza esta forma simple y nativa si también está en NW.js (process.version es v5.11.0).

También probé Microsoft HTA en Windows 10, no desencadena el evento oncancel.

Cuestiones relacionadas