Initialiser l'éditeur / éditeur visuel TinyMCE après insertion AJAX

11

J'ai un groupe de champs de style "répéteur" sur une page d'options personnalisées. Un éditeur visuel actif est dans un état masqué et lorsque l'utilisateur clique sur "ajouter un nouveau", toute la ligne 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 la console:

  

TypeError non capturé: impossible de lire la propriété 'onpageload' of non définie

Et bien sûr, l'éditeur ne fonctionne pas. Après avoir sauvegardé la page, cela fonctionne bien sûr, mais j’ai besoin d’être fonctionnelle lorsque la ligne est également ajoutée.

    
posée Jack Arturo 10.08.2015 - 16:17

1 réponse

1

Avez-vous réussi à faire fonctionner l'éditeur sans inclure votre javascript? Si c'est le cas, essayez de créer un modèle incluant un éditeur de texte fonctionnel, puis réécrivez votre code javascript pour copier ce modèle en utilisant l'argument WithDataAndEvents de jQuery La fonction clone() est définie sur true.

Par exemple:

$('.cloner').click(function(){
  $('.container').append($('.template').clone(true).removeClass('hidden'));
});
    
réponse donnée Fleuv 11.06.2018 - 14:37

Lire d'autres questions sur les étiquettes