Intentar establecer el valor con .val ('') fallará en algunos navegadores (como IE) por razones de seguridad.
Sus mejores opciones es restablecer el formulario:
$('form').trigger('reset');
O utilizar su código de reemplazo, con una ligera modificación (asegurándose de que el HTML válido):
$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file" style="width:275px; position:absolute; left:1px"/>');
Si estilo el cuadro con CSS, su código se vuelve aún más simple.
El CSS:
#fileUpload1 {
width: 275px;
position: absolute;
left: 1px;
}
La JavaScript:
$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file"/>');
Una opción más avanzada es ocultar la caja de carga de archivos cuando se carga la página, a continuación, crear un clon de ella eso se muestra al usuario. Cuando necesite borrarlo, elimine el clon, luego vuelva a clonar el oculto original. Este método también le permite hacer múltiples copias del cuadro de entrada si desea permitir que el usuario cargue más de un archivo. Dejaré los detalles de implementación a su criterio. ;)
Posible duplicado: http://stackoverflow.com/q/1043957/663604 –
Utilizo esa respuesta, pero de hecho no se ha logrado. – anmarti