Blueimp的jQuery-File-Upload第二个文件上传问题

时间:2014-07-15 15:35:39

标签: jquery jquery-file-upload blueimp

我正在使用Blueimp的jQuery-File-Upload插件(基本版),我遇到了问题。第一个文件上传按预期工作,但是当我想发送另一个文件时,它无法正常工作。

fileinput.fileupload({
            dataType: 'json',
            done: function (e, data) {
                $.each(data.result.files, function (index, file) {
                    //do stuff with files
                });
            }
        }).bind('fileuploadadd', function (e, data) {
            data.context = $('<p/>').text('Uploading...').appendTo(document.body);
            data.submit();

        });

编辑:

好的,我知道造成问题的原因。但我不知道如何解决这个问题。我在已设置display none的输入上使用了fileupload插件。我用另一个按钮触发它,该按钮在隐藏输入上使用click()/ trigger(&#39; click&#39;)方法。第一个触发器工作正常,但第二个触发器选择文件对话框。选择什么都没发生。当我直接使用输入字段时,它可以正常工作。如何克服这个问题?

2 个答案:

答案 0 :(得分:6)

问题出现是因为jQuery-File-Upload 克隆并在每次上传后替换输入字段docs)。

因此,您在旧的文件输入标记上触发click事件,该标记不再有效。

要解决此问题,您至少有两个选择:

  1. 在每个blueimp click之后,在新文件输入上触发add事件 事件

  2. 在插件设置上使用replaceFileInput: false(这样会 在某些浏览器中降低用户体验)。 (docs

答案 1 :(得分:0)

很难回复,因为没有足够的信息,但这样的事情可能有效:

function test() {

    fileinput.fileupload({
        dataType: 'json',
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                //do stuff with files
            });
        }
    }).bind('fileuploadadd', function (e, data) {
        data.context = $('<p/>').text('Uploading...').appendTo(document.body);
        data.submit();
        test();
    });

 }

test();