Je ne suis pas un expert sur JS, donc j’ai rencontré un problème dans mon plugin sur lequel je travaille. Le problème est que j’ai créé un champ de répéteur personnalisé avec un uploader utilisant wp.media pour chaque champ comme vous le verrez au code ci-dessous:
var mediaClientUploader;
// background
$(document).on('click', '.upload_client_logo', function(e) {
// blocking
e.preventDefault();
var $this = $(this);
var myInput = $this.prev('input');
//alert(myInput.data('repeat-count'));
if ( mediaClientUploader ) {
mediaClientUploader.open();
return;
}
mediaClientUploader = wp.media.frames.file_frame = wp.media({
title: 'Upload Picture',
button: {
text: 'Choose Picture'
},
multiple: false
});
console.log(mediaClientUploader);
mediaClientUploader.on('select', function () {
attachment = mediaClientUploader.state().get('selection').toJSON();
myInput.val(attachment.url);
});
mediaClientUploader.open();
});
Le problème est cette partie spécifique
mediaClientUploader.on('select', function () {
attachment = mediaClientUploader.state().get('selection').toJSON();
myInput.val(attachment.url);
});
il est juste en cours d'exécution pour une fois, je veux dire avec c'est que pour la première sélection va ajouter l'URL à plusieurs reprises pour la première entrée que je choisis !!
Je connais ce problème, je peux le résoudre par $ (document) .on ("select", "#div", function) mais je ne le fais pas sais comment je peux utiliser cette approche avec wp.media ou ma var mediaClientUploader
J'ai trouvé le problème: "D c'était cette partie du code
if ( mediaClientUploader ) {
mediaClientUploader.open();
return;
}
il arrête la fonctionnalité de mon événement sélectionné après le premier clic, alors je le supprime et tout va bien