2010-02-16 25 views
8

Tôi đang phát triển một trình cắm cho CKEditor cần thực hiện một số thay đổi đối với nội dung của trình soạn thảo ngay trước khi lưu. Trong FCKeditor, tôi đã đạt được điều này bằng cách sử dụng sự kiện nhưng tôi chưa thể tìm được cách tương đương để thực hiện điều này trong CKEditor. Tôi đã hy vọng sẽ có một sự kiện phù hợp để nối vào nhưng dường như không có. Có ai biết cách làm điều này không?Cập nhật nội dung trình soạn thảo ngay lập tức trước khi lưu trong trình cắm CKEditor

+0

gì 'save' sự kiện/chức năng bạn đang sử dụng? Nút "lưu"? –

+0

Có. Trình cắm sẽ được chủ sở hữu trang web sử dụng đã thiết lập CKEditor tuy nhiên họ đã thấy phù hợp, vì vậy tôi muốn giữ trình cắm của tôi càng sạch càng tốt, điều đó có nghĩa là không thay thế nút lưu chuẩn nếu có thể. Tôi đã xem xét nguồn và đặt cược tốt nhất của tôi dường như thêm một trình xử lý sự kiện 'submit' vào biểu mẫu có chứa trình soạn thảo, nhưng điều này hầu như không đủ tiêu chuẩn làm sạch. –

Trả lời

6

Bạn có thể sử dụng sự kiện getData, nhưng hãy cẩn thận vì nó cũng được kích hoạt để sử dụng nội bộ.

Tôi đã nộp http://dev.fckeditor.net/ticket/5254 để tái tạo sự kiện trước

+0

Cùng với việc tạo trình xử lý của riêng tôi cho sự kiện gửi biểu mẫu? –

+1

Đó sẽ là giải pháp thay thế. Trong thực tế, đó là cái mà tôi đã chọn vào lúc này bởi vì nó có thể dễ dàng hơn để xử lý nó một cách chính xác cho đến khi một sự kiện thích hợp được tạo ra bởi CKEditor (tôi thực sự không biết bạn muốn làm gì, vì vậy tôi đoán rằng nó phải là thứ phức tạp chỉ được thực hiện sau khi cập nhật vùng văn bản) – AlfonsoML

+0

Trình cắm của tôi cho phép người dùng nhúng các phần nội dung được lưu trữ trên một máy chủ khác vào nội dung HTML chính. Chúng được thể hiện trong nội dung của trình chỉnh sửa dưới dạng hình ảnh trình giữ chỗ để ngăn chúng được chỉnh sửa trong CKEditor. Ngay trước khi trình chỉnh sửa lưu, tôi muốn thay thế các hình ảnh giữ chỗ này bằng nội dung HTML mà chúng đại diện và khi trình chỉnh sửa tải, tôi muốn chuyển đổi HTML đặc biệt thành trình giữ chỗ (mà tôi có thể thực hiện với các sự kiện hiện có). Có lẽ có một cách tiếp cận khác mà tôi nên dùng? –

1

Như vào liên kết ở trên không thực sự có giải pháp về sự kiện OnAfterLinkedFieldUpdate substitude Tôi đã viết được một bài ngắn về cách để đi xung quanh nó.

Dưới đây là hình thức:

<form id="my_form" action="submit.php" method="post" name="my_form"> 
    <textarea id="my_text" name="my_text"></textarea> 
    <input id="submitForm" type="submit" name="submitForm" value="Submit" /> 
</form> 

JavaScript:

var formSubmitted = false; 
$("#submitForm").live('click', function(event) { 
    if (formSubmitted === true) { 
     formSubmitted = false; 
     return; 
    } 
    event.preventDefault(); 
    //put here function to edit content == OnAfterLinkedFieldUpdate 
    var editor = CKEDITOR.instances.my_text; 
    var html = editor.getData(); 
    html.replace(searchvalue, newvalue); 
    editor.setData(html); 
    formSubmitted = true; 
    $(this).trigger('click'); 
}); 

Mã này là here

Các vấn đề liên quan