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!

1

2 Answers 2

14

It’s readonly.

Sign up to request clarification or add additional context in comments.

Comments

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'.

3 Comments

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.
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.
Here's your results Uncaught TypeError: Object #<FileList> has no method 'splice' (From chrome)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.