gpt4 book ai didi

javascript - 动态更改 Dropzone maxFiles

转载 作者:行者123 更新时间:2023-11-29 22:46:15 25 4
gpt4 key购买 nike

每次上传/删除新图像时,我都会尝试动态更新 MaxFiles 属性。通过使用以下代码,它不允许上传任何图像,而不是将其限制为 maxFiles。它没有获取变量 maxFile 的值,但是当我删除 maxFile 变量并输入一个数字时,它就可以正常工作。从这个 Answer 得到源代码的想法.

!function ($) {
"use strict";
var Onyx = Onyx || {};


Onyx = {
init: function() {
var self = this,
obj;

for (obj in self) {
if ( self.hasOwnProperty(obj)) {
var _method = self[obj];
if ( _method.selector !== undefined && _method.init !== undefined ) {
if ( $(_method.selector).length > 0 ) {
_method.init();
}
}
}
}
},

userFilesDropzone: {
selector: 'form.dropzone',
init: function() {
var base = this,
container = $(base.selector);

base.initFileUploader(base, 'form.dropzone');
},
initFileUploader: function(base, target) {

var maxFile = $('.dropzone').attr('data-count');

var onyxDropzone = new Dropzone(target, {
url: ($(target).attr("action")) ? $(target).attr("action") : "data.php", // Check that our form has an action attr and if not, set one here
maxFiles: maxFile,
maxFilesize: 5,
acceptedFiles: ".JPG,.PNG,.JPEG",
// previewTemplate: previewTemplate,
// previewsContainer: "#previews",
clickable: true,
uploadMultiple: false,

});

onyxDropzone.on("success", function(file, response) {
let parsedResponse = JSON.parse(response);
file.upload_ticket = parsedResponse.file_link;
var imagecount = $('.dropzone').attr('data-count');
imagecount = imagecount - 1;
$('.dropzone').attr('data-count', imagecount);
});
},
}
}
}// JavaScript Document

function openImagePopup(id = null) {
$(".upload-images").show();
$.ajax({
url: 'fetch.php',
type: 'post',
data: {id: id},
dataType: 'json',
success:function(response) {
var imagecount = response.counts;
$('.dropzone').attr('data-count', imagecount);
}
});
}

HTML

<form action="data.php" class="dropzone files-container" data-count="">
<div class="fallback">
<input name="file" type="file" multiple />
</div>
<input type="hidden" id="imageId" name="imageId">
</form>

最佳答案

更新的答案

实例化后,Dropzone 插件将保持相同的选项,除非您直接更改实例内部选项

要更改 Dropzone 的选项,您可以使用以下行:

$('.dropzone')[0].dropzone.options.maxFiles = newValue;

$('.dropzone')[0] 返回第一个 dropzone DOM 元素

.dropzone.options 返回 Dropzone 的底层插件实例选项。您现在可以直接更改此对象上的任何选项。

在你的情况下,你将不得不像下面那样更改启动弹出窗口的功能

function openImagePopup(id = null) {
$(".upload-images").show();
$.ajax({
url: 'fetch.php',
type: 'post',
data: {id: id},
dataType: 'json',
success:function(response) {
var imagecount = response.counts;
$('.dropzone')[0].dropzone.options.maxFiles = imagecount;
}
});
}

然后像这样更改 dropzone onSuccess 事件:

onyxDropzone.on("success", function(file, response) {
let parsedResponse = JSON.parse(response);
file.upload_ticket = parsedResponse.file_link;
var imagecount = $('.dropzone')[0].dropzone.options.maxFiles - 1;
$('.dropzone')[0].dropzone.options.maxFiles = imagecount;
});

如您所见,您还可以删除元素上的 data-count=""属性并重新使用插件实例 options.maxFiles 中的值

关于javascript - 动态更改 Dropzone maxFiles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58436735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com