Zainicjuj edytor / edytor wizualny TinyMCE po wstawieniu AJAX


11

Mam grupę pól w stylu „repeater” na niestandardowej stronie opcji. Aktywny edytor wizualny jest w stanie ukrytym, a kiedy użytkownik kliknie „dodaj nowy”, cały wiersz zostanie sklonowany. Następnie muszę zainicjować edytor wizualny w sklonowanym wierszu. Mój kod:

$('.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});
    });
});

Zrzut ekranu interfejsu:

Zrzut ekranu

Podczas ładowania strony pojawia się błąd konsoli:

Uncaught TypeError: Nie można odczytać właściwości „onpageload” niezdefiniowanej

I oczywiście edytor nie działa. Po zapisaniu strony działa to oczywiście dobrze, ale potrzebuję, aby działała również po dodaniu wiersza.


czy udało Ci się rozwiązać problem „onpageload”
— Kvvaradha

Wygląda na to, że może być konieczne zarejestrowanie niektórych rzeczy za pomocą szybkich tagów. Nie jestem w 100% pewien, ponieważ nie mogę tego przetestować lokalnie, ale możesz zacząć od stackoverflow.com/questions/21519322/..., aby zobaczyć, czy to w ogóle pomaga.
— phatskat

Hej, natknąłem się na to ponownie. OP, czy możesz dodać fragment opisujący sposób dodania jednego z tych pól do edytora postów? Mogę spróbować zareagować lokalnie i zagłębić się w to, jeśli sam potrafisz to zrobić.
— phatskat

Cześć @phatskat, dzięki. Skończyło się na zupełnie innym kierunku ... klient chciał spakować ten system do sprzedaży komercyjnej, więc wszystko napisaliśmy od nowa, używając niestandardowego interfejsu bez ACF. Doceń ofertę, aby pomóc!
— Jack Arturo

Odpowiedzi:


1

Czy udało Ci się uruchomić edytor bez dołączonego javascript? Jeśli tak, spróbuj utworzyć szablon zawierający działający edytor tinymce, a następnie przepisz kod JavaScript, aby skopiować ten szablon, używając WithDataAndEventsargumentu clone()funkcji jQuery ustawionej na true.

Na przykład:

$('.cloner').click(function(){
  $('.container').append($('.template').clone(true).removeClass('hidden'));
});
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.