¿Hay alguna posibilidad de detectar cada selección de archivo que el usuario hizo para un elemento HTML input
de tipo file
?
Esto se preguntó muchas veces antes, pero el onchange
evento generalmente propuesto no se dispara si el usuario selecciona el mismo archivo nuevamente.
javascript
html
forms
dom-events
Dronus
fuente
fuente
input
valor de s en '' después de hacer algo con el archivo. Pero eso también eliminaría el nombre de archivo visible. Sin embargo, eso puede estar bien, ya que el archivo se procesa realmente y el resultado de esa acción puede aparecer en otro lugar.file
entradaonchange
no se parece.Respuestas:
Establezca el valor de
input
anull
en cadaonclick
evento. Esto restablecerá elinput
valor de 's y activará elonchange
evento incluso si se selecciona la misma ruta.Aquí hay una DEMO .
Nota: es normal si su archivo tiene el prefijo 'C: \ fakepath \'. Esa es una característica de seguridad que impide que JavaScript conozca la ruta absoluta del archivo. El navegador aún lo sabe internamente.
fuente
this.value = null
al finalonchange
porque es posible activar un elemento de entrada sin hacer clic en él (usando el teclado). Puede almacenarinput.files
si necesita consultarlo más tarde.this.value=null;
solo es necesario para Chrome, Firefox funcionará bien solo conreturn false;
Aquí hay un violín
fuente
En este artículo, bajo el título "Uso de entrada de formulario para seleccionar"
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Agrega un detector de eventos para 'cambiar', pero lo probé y se dispara incluso si elige el mismo archivo y no si cancela.
fuente
change
evento solo se dispararía en los cambios de nombre de archivo.Use el evento onClick para borrar el valor de la entrada objetivo, cada vez que el usuario hace clic en el campo. Esto asegura que el evento onChange se activará también para el mismo archivo. Trabajó para mi :)
Usando TypeScript
fuente
Haga lo que quiera hacer después de que el archivo se cargue correctamente. Justo después de completar el procesamiento de su archivo, establezca el valor del control de archivo en una cadena en blanco. Entonces, el .change () siempre se llamará incluso si el nombre del archivo cambia o no. por ejemplo, puedes hacer esto y funcionó para mí como encanto
fuente
fuente
Borrar el valor del índice 0 de entrada funcionó para mí . Por favor, intente el siguiente código, espero que esto funcione (AngularJs).
fuente