Quiero decirle a mi backend, eliminé el archivo asignado que ya cargó:
<input id="pic" name="pic" type="file" onclick="this.value=null;" onchange="uploadFile(this);"> <button id="pic-delete" type="button" onclick="removeFile(this);"><i someicon></i></button>donde la función onclick se ve así:
removeFile = function() { var ipt = document.getElementById("pic"); ipt.value = null; // <--- problem here console.log("worked...") } mi problema ahora es: puedo diferenciar la solicitud en la pestaña Red del navegador si no hago nada o presiono el botón Eliminar. En ambas ocasiones, el campo de entrada no aparece. Quería agregar ipt.value="DELETE" para poder detectar eso en el backend, pero esto genera un error:
Uncaught DOMException: An attempt was made to use an object that is not, or is no longer, usable Por lo que puedo decir, el error siempre ocurre si pongo algo más que ipt.value = null o ipt.value = "" en esta línea.
Un violín con el código completo para mostrar el error: https://jsfiddle.net/rvc8sbjy/3/
Hay algunos errores. La forma en que estaba tratando de extraer la identificación es incorrecta. Un enfoque mucho más fácil es simplemente usar .replace
var inputFieldID = v.id.replace("-delete", "");Segundo: no puede establecer el valor en una cadena no vacía. Para restablecerlo, simplemente configúrelo en uno vacío:
ipt.value = "";Ejemplo de trabajo: