I noticed some very strange things happening on a page that I use knockout to power. Here's the situation:

```html
    <div class="col-md-4">
        <h3 class="">Upload Document</h3>
        <form id="document-form">
            <span class="form-group">
                <input type="file" name="files" value="Upload" multiple="" id="input-file" style="display: none;" data-bind="event:{change: uploadFiles}" />
                <label for="input-file" class="btn btn-default">Select Files</label>
            </span>
        </form>
    </div>

```

This little area would immediately post the file back to my server whenever the user added files. The code for uploadFiles looked like this.

```
    //formNode is passed into the viewmodel at time of instantiation, and it is just
    //the DOM node that represents that <form></form> element
    self.uploadFiles = function() {
        self.showLoading(true);
        event.preventDefault();

        var formData = new FormData($(formNode)[0]);

        $.ajax({
            url: someUrl,
            type: 'POST',
            data: formData,
            async: true,
            cache: false,
            contentType: false,
            processData: false,
            success: someFunction
        });
    };

```

So this worked very well. Then, I added an if data-bind to the whole thing like so:

```html
    <div class="col-md-4" data-bind="if: userHasPermission">
        <h3 class="">Upload Document</h3>
        <form id="document-form">
            <span class="form-group">
                <input type="file" name="files" value="Upload" multiple="" id="input-file" style="display: none;" data-bind="event:{change: uploadFiles}" />
                <label for="input-file" class="btn btn-default">Select Files</label>
            </span>
        </form>
    </div>

```

Now the user (assuming they have permission) can see the upload form and can also choose a file to upload, but the uploadFiles function now materializes nothing in the formData variable and consequently, nothing but an empty, nameless file gets posted back to the server.

Any ideas why this is happening? Is there something I can do to mitigate this?