我有一个页面,其中动态地将多个输入文件字段添加到DOM中,每个字段都应该转换为一个FilePond。
下面是一个模拟我的问题的代码:https://codepen.io/veur/pen/pooZWoo
triggered
FilePond:addfile事件是FilePond:addfile "Load FilePond 2":FilePond:addfile事件将再次为第一个FilePond触发
创建第二个文件元素时,我只希望将该元素转换为FilePond。是否有只加载非转换文件输入的FilePond方法?
发布于 2019-11-11 14:12:58
好吧,我猜这就是你要找的。
您使用类名来创建一个文件池,因为您在文件上传时使用的是同一个类,这就产生了问题。
当您希望两个元素彼此独立工作时,请始终使用ID。
我为文件上传和传递给loadFilePond函数提供了一个唯一的ID。
希望这能帮到你。
码笔
https://codepen.io/hasnentrebdingcodes/pen/mddjXKo
$(function(){
// First register any plugins
$.fn.filepond.registerPlugin(
FilePondPluginImagePreview
);
// Create FilePond element
$(document).on('click', '.fp1', function(e) {
$('.pond1').html(`<input type="file" id="fp-1"
class="filepond"
name="filepondone"
multiple
data-allow-image-edit="false"
data-max-file-size="3MB"
data-max-files="3">`);
loadFilePond('fp-1');
});
// Create second FilePond element
$(document).on('click', '.fp2', function(e) {
$('.pond2').html(`<input type="file" id="fp-2"
class="filepond"
name="filepondtwo"
multiple
data-allow-image-edit="false"
data-max-file-size="3MB"
data-max-files="3">`);
loadFilePond('fp-2');
});
});
// Turn input element into a pond
function loadFilePond(clickedFP) {
$('#'+clickedFP).filepond({
allowMultiple: true,
server:{
process: {
url: '/api'
}
}
});
// Listen for addfile event
$('#'+clickedFP).on('FilePond:addfile', function(e) {
console.log('file added event', e);
});
}<a href="#" class="fp1">Load FilePond 1</a>
<div class="pond1"></div>
<a href="#" class="fp2">Load FilePond 2</a>
<div class="pond2"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet">
<link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet">
<!-- include FilePond library -->
<script src="https://unpkg.com/filepond/dist/filepond.min.js"></script>
<!-- include FilePond plugins -->
<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.js"></script>
<!-- include FilePond jQuery adapter -->
<script src="https://unpkg.com/jquery-filepond/filepond.jquery.js"></script>
发布于 2022-04-18 06:16:24
我已经在纯JavaScript中创建了一个动态文件池实例,任何人都可以使用我的一个PHP项目来尝试这一点。
// Default Html input for Filepond
<input id="pond1" type="file" class="filepond d-none imageOptions" name="image_options[]" data-allow-reorder="true" data-max-file-size="2MB" data-max-files="4" accept="image/png, image/jpeg, image/gif" />
//wrapper where the new input field will appear
var wrapper = $('.multipleOptions');
// Once add button is clicked create new filepond image upload option
$(addButton).click(function() {
optionCount++;
var fieldHTML =`<input id="pond${optionCount}" type="file" class="filepond imageOptions" name="image_options[]" data-allow-reorder="true" data-max-file-size="2MB" data-max-files="4"/>`;
$(wrapper).append(fieldHTML);
let pondId = "pond" + optionCount;
loadFilepond(pondId);
});
// Call first instance of filepond
loadFilepond('pond1');
//create and load multiple filepond instance dynamically on addButton click
function loadFilepond( filePondId ) {
console.log('input#' + filePondId);
let inputElement = document.querySelector('input#' + filePondId);
FilePond.create(inputElement);
FilePond.setOptions({
allowMultiple: true,
server: {
url : "/uploads/tmp",
headers: {
'X-CSRF-TOKEN' : '{{ csrf_token() }}'
}
}
})
}https://stackoverflow.com/questions/58800221
复制相似问题