jquery .filedrop. js - как изменить параметры после инициализации? - PullRequest
0 голосов
/ 19 июня 2020

Я использую jquery .filedrop. js - https://github.com/weixiyen/jquery-filedrop.

$(function () {
    $('#dropZone').filedrop({
        url: `http://example.com/Upload.asp?uploadLocation=${uploadLocation}&filename=${filename}`,
        paramname: 'file1',
        maxFiles: 5,
        dragOver: function () {
            $('#dropZone').css('background', 'blue');
        },
        dragLeave: function () {
            $('#dropZone').css('background', 'gray');
        },
        drop: function() {
            alert("dropping")
            $('#dropZone').css('background', 'gray');
        },
        afterAll: function () {
            // $('#dropZone').html('The file(s) have been uploaded successfully!');
        },
        uploadFinished: function (i, file, response, time) {
            $('#uploadResult').append('<li>' + file.name + '</li>');
        }
    });
});

Однако после инициализации мне нужно иметь возможность изменить некоторые из те варианты на "Drop". maxFiles, например. Или я застрял в том, что не инициализирую, пока не получу нужную мне информацию?

1 Ответ

0 голосов
/ 21 июня 2020

Ну, учитывая, что это функция, это невозможно. Однако я добавил параметр в скрипт filedrop. js - myFiles = [] - и изменил его:

        function drop(e) {
        if (opts.drop.call(this, e) === false) return false;
        if ((e.originalEvent===undefined||!e.originalEvent.dataTransfer)&&opts.myFiles.length<0) //<--this line {
            return;
        }
/* from here */
        if (opts.myFiles.length) {
            files = opts.myFiles;
        } else {
            files = e.originalEvent.dataTransfer.files;
        }
/* to here */
        if (files === null || files === undefined || files.length === 0) {
            opts.error(errors[0]);
            return false;
        }

        files_count = files.length;
        upload();
        e.preventDefault();
        return false;
    }

А затем изменил мой jquery на это:

var files;
$(document).on('dragover drop dragenter dragleave', `.prodSelect`, function(event) {
    event.stopPropagation();
    event.preventDefault();
    if (event.type == 'drop') {
        files=event.originalEvent.dataTransfer.files;
        filename=$(this).prop(`id`)+`.jpg`;
        setURL($(this));
        $(`#dropZone`).trigger(`drop`);
    }
});


function setURL(curDiv) {
    $(function () {
        $(`#dropZone`).filedrop({
            url: `https://example.com/upload/Upload.asp?uploadLocation=${uploadLocation}&filename=${filename}`,
            paramname: 'file1',
            maxfiles: 1,
            myFiles: files,
            rename: function() {
                return filename;
            },
            uploadFinished: function (i, file, response, time) {
                curImg=curDiv.find(`.prdimg`).attr(`src`,``);  curImg.attr(`src`,`https://seasonal.kickeepants.net/shop/pc/images/catalogcreation/${filename}?${Math.floor(Math.random()*1000)}`)
            }
        });
    });
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...