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.