2017-01-22 1 views
3

comment je peux supprimer la valeur de l'objet FormData avec le même nom? J'ai un formulaire HTML avec deux fichiers d'entrée.Jquery delete valeur de l'objet FormData

<input id="human" type="file" name="file[]" class="docfiles" /> 
<input id="animal" type="file" name="file[]" class="docfiles" /> 

Par exemple, je veux supprimer le fichier 1 - avec l'ID "humain". Une idée de comment faire cela? Ici, ma démonstration jsfiddle.

Répondre

5

Manipulez le tableau de fichiers et rajoutez les éléments moins celui qui doit être supprimé.

var files = formData.getAll("file[]"); 
files.splice($("[type='file']").index($("#animal")), 1); 
formData.delete("file[]"); 
$.each(files, function(i, v) { 
    formData.append("file[]", v); 
}); 

Démo https://jsfiddle.net/nnte528L/

0

si vous utilisez jQuery, vous pouvez utiliser

$("#human").remove(); 

si vous utilisez JS vanille vous pouvez effectuer les opérations suivantes

var human = document.getElementById('human'); 
human.parentNode.removeChild(human); 
+0

Merci pour la réponse, mais ce n'est pas que je veux. J'essaye ceci [link] (https://developer.mozilla.org/en-US/docs/Web/API/FormData/delete) mais "file" est un tableau. – didsun

0

Vous pouvez supprimer la liste complète des fichiers en définissant la valeur propriété de l'objet d'entrée à une chaîne vide.

document.getElementById('human').value = ""; 

Si vous utilisez FormData, vous pouvez aussi avoir

ForEach(var key in formData.keys()){ 
    formData.delete(key); 
} 

Cela itérer toutes les clés formData et supprimer toutes les paires de valeurs clés.