¿Por qué IE no restaura el campo de entrada del archivo?

Modifiqué mi formulario actual para activar un envío de formulario después de que un usuario elige un archivo para cargar. Después de completar la carga, llamo a:

$('#file').val(''); 

para restablecer el campo de entrada de archivo.

 HTML  

Esto funciona en Chrome, FF y Safari, pero no funciona en IE. ¿Hay alguna solución alternativa o mejor para IE?

No puede cambiar el valor de un tipo de entrada de archivo, ya que eso introduciría una vulnerabilidad de seguridad. En su lugar, simplemente reemplace la entrada del archivo por una nueva. En lugar de $('#file').val('') , haga esto:

 $('#file').replaceWith(''); 

Aún mejor sería clonar una copia de la versión original y almacenarla en la memoria. Cuando necesite reemplazarlo, simplemente use la copia clonada y vuelva a clonarlo. Entonces, algo como esto:

 $(document).ready(function() { var empty_input = $('#file').clone(); $('#the-form').on('change', '#file', function(el) { $('#the-form').submit(); // assuming the target is a hidden iframe $(this).replaceWith(empty_input.clone()); }); }) 

Tenga en cuenta que estoy usando la versión delegada con jQuery.on () para que el evento siga funcionando en la nueva entrada justo después de que sea reemplazada.