С помощью dropzone.js для загрузки файла drag'n'drop я хотел бы добавить динамическую загрузку файла.Dropzone.js - Как подключить интерактивную кнопку загрузки (добавить кнопку) динамически
На странице есть список заказов. Когда вы выбираете заказ, он загружается через вызов Ajax и отображается. Я создаю Dropzone на document.body при загрузке страницы, чтобы отказать в загрузке с дружественным сообщением об ошибке до тех пор, пока не будет выбран заказ. Когда заказ загружен, кнопка добавления отображается с порядком, и я хотел бы добавить обработчик кликов Dropzone к этой динамически созданной кнопке. Кнопка будет воссоздана каждый раз, когда выбран новый порядок.
Я просто не могу понять, как установить/изменить clickable
Вариант Dropzone после создания Dropzone.
var documentDropzone = new Dropzone(document.body, {
url: '/path/to/upload.php',
clickable: false,
init: function() {
this.on('sending', function(file, xhr, formData) {
var order_id = parseInt($('#dropzone_order_id').val(), 10);
formData.append('order_id', order_id);
});
},
accept: function(file, done) {
if (parseInt($('#dropzone_order_id').val(), 10)) done();
else {
showErrorMessage('Please select an order first');
done('error');
}
},
success: function(file, response) {
// handle response
}
});
$(document).on('click', '.view-opener', function(event) {
event.preventDefault();
$('#view-order').remove();
var view = $('<div id="view-order"></div>')
.prependTo('#inner-container-top');
view.load(this.href, function(){
// This is the failing line of code. The #dropzone-click-target
// is a button that is loaded with this ajax call.
// (It also contains a hidden input with #dropzone_order_id
// which enables the upload functionality.)
Dropzone(document.body, {clickable: '#dropzone-click-target'});
});
});
скрипку доступна здесь:
http://jsfiddle.net/tomas_eklund/761qr3r5/
Вы пытались настроить 'autoProcessQueue' на false и затем запускать' processQueue' в своем пользовательском обработчике кликов? – elzi
@elzi Я не думаю, что это выполнило бы мои цели. Причина, по которой я создаю Dropzone до того, как выбран заказ, заключается в том, что я хочу изящно обрабатывать ситуации, когда пользователь случайно бросает файл в окно перед выбором заказа. Для многих типов файлов, таких как PDF, он, скорее всего, будет отображаться браузером и заменяет текущий экран, что может быть катастрофическим, если на экране имеется много несохраненных данных. Я не хочу вставлять файлы в очередь и загружать их в следующий выбранный заказ. Я хочу отказаться от загрузки. –
Вижу. Я попытался немного поработать с ним, изменив «myDropzone.options.clickable = true;» после выбора фруктов, но только это не настраивает слушателей событий. Я бы выкрикнул код Dropzones и искал 'if (clickable)', чтобы увидеть, что запускается. Вы могли бы сделать взломанное решение, сначала перезаписав прослушиватель вентиляционных отверстий, затем отвязав его после выбора фрукта. – elzi