Khởi tạo trình soạn thảo / trình soạn thảo trực quan TinyMCE sau khi chèn AJAX


11

Tôi có một nhóm trường kiểu "lặp lại" trên trang tùy chọn tùy chỉnh. Có một trình soạn thảo trực quan đang hoạt động ở trạng thái ẩn và khi người dùng nhấp vào "thêm mới", toàn bộ hàng được sao chép. Sau đó tôi cần khởi tạo trình soạn thảo trực quan trong hàng nhân bản. Mã của tôi:

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

Ảnh chụp màn hình của giao diện:

Ảnh chụp màn hình

Khi tải trang, tôi gặp lỗi bảng điều khiển:

Uncaught TypeError: Không thể đọc thuộc tính 'onpageload' không xác định

Và tất nhiên trình soạn thảo không hoạt động. Sau khi tôi lưu trang, nó hoạt động tốt, nhưng tôi cần nó hoạt động khi hàng cũng được thêm vào.


bạn có nhận được giải pháp cho vấn đề 'onpageload'
Kvvaradha

Có vẻ như bạn cũng có thể cần phải đăng ký một số thứ với các thẻ nhanh chóng. Tôi không chắc chắn 100% vì tôi không thể kiểm tra điều này tại địa phương, nhưng bạn có thể bắt đầu với stackoverflow.com/questions/21519322/ để xem điều đó có giúp ích gì không.
phatskat

Này, đã đi qua điều này một lần nữa. OP, bạn có thể vui lòng thêm một đoạn trích để biết cách thêm một trong các trường này vào trình chỉnh sửa bài không? Tôi có thể thử và repro nó cục bộ và đào sâu vào nó nếu bạn có thể cung cấp một cách để tự mình đứng lên.
phatskat

Này @phatskat, cảm ơn. Tôi thực sự đã kết thúc một hướng hoàn toàn khác ... khách hàng muốn đóng gói hệ thống này để bán thương mại vì vậy chúng tôi đã viết lại mọi thứ bằng giao diện tùy chỉnh mà không cần ACF. Đánh giá cao lời đề nghị để giúp đỡ!
Jack Arturo

Câu trả lời:


1

Bạn có quản lý để làm cho trình soạn thảo hoạt động mà không có javascript của bạn không? Nếu vậy, hãy thử tạo một mẫu bao gồm trình soạn thảo tinymce hoạt động và sau đó viết lại javascript của bạn để sao chép mẫu đó bằng cách sử dụng WithDataAndEventsđối số của jQueryclone() hàm được đặt thành true.

Ví dụ:

$('.cloner').click(function(){
  $('.container').append($('.template').clone(true).removeClass('hidden'));
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.