J'ai un groupe de champs de style "répéteur" sur une page d'options personnalisées. Il y a un éditeur visuel actif dans un état caché, et lorsque l'utilisateur clique sur "ajouter un nouveau", la ligne entière est clonée. J'ai ensuite besoin d'initialiser l'éditeur visuel dans la ligne clonée. Mon code:
$('.repeater-add-new').click(function(event) {
event.preventDefault();
var target = $(this).data('repeater');
$( '#' + target).find('.repeater-row:not(.clone) .repeater-content.in').collapse();
var newRow = $( '#' + target + ' .repeater-row.clone' ).clone().appendTo( '#' + target + ' .repeater-row-wrapper' ).removeClass('clone');
rebuildIndex(target);
// Initialize editors if needed
newRow.find('.wp-editor-wrap').each(function(index, el) {
var ed_id = $(this).find('textarea').attr('id');
tinymce.init(tinyMCEPreInit.mceInit[ed_id]);
tinymce.execCommand('mceAddEditor', false, ed_id);
quicktags({id : ed_id});
});
});
Capture d'écran de l'interface:
Lorsque la page se charge, j'obtiens l'erreur de console:
TypeError non capturé: impossible de lire la propriété «onpageload» de non défini
Et bien sûr, l'éditeur ne fonctionne pas. Après avoir enregistré la page, cela fonctionne bien sûr, mais j'ai besoin qu'elle soit fonctionnelle lorsque la ligne est également ajoutée.
Réponses:
Avez-vous réussi à faire fonctionner l'éditeur sans votre javascript inclus? Si c'est le cas, essayez de créer un modèle qui comprend un éditeur de tinymce fonctionnel, puis réécrivez votre javascript pour copier ce modèle en utilisant l'
WithDataAndEvents
argument de laclone()
fonction jQuery défini sur true.Par exemple:
la source