15

I'm trying to remove or somehow nullify a single value in a single input for multiple files. Let's say we have four values...

<input id="input" multiple="multiple" type="file" />
input = document.getElementById('input');
// So our four files are:
input.files[0];
input.files[1];
input.files[2];
input.files[3];

if I wanted to remove [1] from the array without disrupting the others, can I do it? I've tried splicing, setting the value to NULL, changing the name etc. None of this stuff seems to work (while the element remains readonly = false) Jquery's remove function removes the entire element so that doesn't work. Any help is greatly appreciated!

Gabriel M Sharp
  • 335
  • 1
  • 6
  • 17
  • Does this answer your question? [How to remove one specific selected file from input file control](https://stackoverflow.com/questions/19060378/how-to-remove-one-specific-selected-file-from-input-file-control) – Ajeet Shah May 14 '20 at 14:40

2 Answers2

14

It’s readonly.

Josh Lee
  • 171,072
  • 38
  • 269
  • 275
1

I'm curious to why splice does not work. Normally it's very easy to do this:

var list = [4,5,6];
list.splice(1,1);
console.log(list); // [4,6]

So if this doesn't work, I'd like to know what the results are.

Edit

Btw, you need to use:

var input = document.getElementById('input');

You have to declare your variables with 'var'.

Luwe
  • 3,026
  • 1
  • 20
  • 21
  • 3
    It doesn't work because (a) the `files` property (in the browsers that even support it) is a FileList collection and not an Array, so, like other DOM types such as NodeList, it doesn't have a `splice` method. And (b), as jleedev posted, FileList is read-only. Deliberately so, to try to keep interaction with the highly security-sensitive file upload field to a minimum. – bobince Aug 17 '11 at 21:37
  • Also @Luwe: one does not have to declare her variables with `var`. It's good practice and they end up in the global scope if one does not, but one doesn't **have** to. – ANeves Dec 14 '11 at 19:22
  • Here's your results Uncaught TypeError: Object # has no method 'splice' (From chrome) – pshirishreddy Oct 06 '12 at 09:02