2012-08-03 33 views
16

Tôi hava một vùng văn bản và tôi đang sử dụng tinyMCE trên vùng văn bản đó.Đặt giá trị textarea bằng javascript sau khi TinyMCE khởi tạo

Điều tôi đang làm thực sự là khi trang được mở, tôi đang điền văn bản vào một số văn bản và sau đó tôi đang khởi tạo tinyMCE.

Vấn đề là khi tôi cố gắng thay đổi giá trị của vùng văn bản sau khi khởi chạy tinyMCE, thì không có gì xảy ra.

Đây là một ví dụ.

  1. Tạo textarea:

    <textarea style="width: 95%;" name="title" id="title"></textarea> 
    
  2. Populate textarea:

    $('#title').html("someText"); 
    
  3. Khởi tạo TinyMCE

    tinyMCE.init({ 
         // General options 
         mode : "specific_textareas", 
         theme : "advanced", 
         width: "100%", 
         plugins : "pagebreak,paste,fullscreen,visualchars", 
    
         // Theme options 
         theme_advanced_buttons1 : "code,|,bold,italic,underline,|,sub,sup,|,charmap,|,fullscreen,|,bullist,numlist,|,pasteword", 
         theme_advanced_buttons2 :"", 
         theme_advanced_buttons3 :"", 
         theme_advanced_buttons4 :"", 
         theme_advanced_toolbar_location : "top", 
         theme_advanced_toolbar_align : "left", 
         theme_advanced_statusbar_location : "bottom", 
         valid_elements : "i,sub,sup", 
         invalid_elements : "p, script", 
         editor_deselector : "mceOthers" 
        }); 
    
  4. Tôi muốn chan ge nội dung của TextView (nhưng nó không làm việc)

Tôi đã tryed để sử dụng giống như trước init TinyMCE

$('#title').html("someModifiedText"); // does not work 

Tôi cũng đã tryed để loại bỏ TinyMCE:

if(tinyMCE.getInstanceById('title')) 
    removeTinyMCE("title"); 

Với

function removeTinyMCE (dialogName) { 
    tinyMCE.execCommand('mceFocus', false, dialogName); 
    tinyMCE.execCommand('mceRemoveControl', false, dialogName); 

}

Và thét để tái sử dụng:

$('#title').html("someModifiedText"); // does not work 

tôi ra khỏi những ý tưởng ... Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn ....

Trả lời

23

Vấn đề ở đây là bạn sẽ không thấy bất cứ điều gì nếu bạn nhập văn bản hoặc html vào vùng văn bản của bạn. Văn bản của bạn bị ẩn khi tin nhắn được khởi tạo. Sau đó, những gì bạn thấy là khung nội tuyến có thể chỉnh sửa được sử dụng để chỉnh sửa và tạo kiểu nội dung. Có một số sự kiện sẽ gây ra tinymce để viết nội dung của nó vào phần tử nguồn html của trình soạn thảo (trong trường hợp của bạn là vùng văn bản của bạn).

Nếu bạn muốn thiết lập các nội dung của biên tập viên (trong đó có thể nhìn thấy), bạn sẽ cần phải gọi một cái gì đó giống như

tinymce.get('title').setContent('<p>This is my new content!</p>'); 

Bạn cũng có thể acces các yếu tố dom trực tiếp bằng cách sử dụng sau đây

tinymce.get('title').getBody().innerHTML = '<p>This is my new content!</p>'; 

hoặc sử dụng jQuery

$(tinymce.get('title').getBody()).html('<p>This is my new content!</p>'); 
+0

Cảm ơn một lần nữa Thariama, tôi geting một lỗi ở đây: tinymce.get ('title') là không xác định –

+0

tham khảo [this] (http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.setContent). – Prasanth

+0

@ goldenparrot, cảm ơn bạn, tôi đã cố gắng thử nhưng vẫn là vấn đề tương tự. –

0

Nó phù hợp với tôi.Chỉ cần đặt nó bên trong mã html của bạn thay vì đi TinyMCE

<textarea> html CONTENT</textarea> 
3

Đơn giản chỉ cần làm việc này cho tôi

$("#description").val(content); 
+3

Điều này làm việc cho phiên bản 3, nhưng không có trong phiên bản 4. – Sergi

6

Bạn có thể sử dụng tinyMCE.activeEditor.setContent('<span>some</span> html');

Check this Answer

+0

Nếu bạn cảm thấy rằng câu hỏi này là một bản sao, nó phải được gắn cờ như vậy. Vui lòng không đăng liên kết lên các câu hỏi Stack Overflow khác làm câu trả lời. – JAL

+0

xin lỗi đã không nhận thấy bài đăng của người dùng đó. Cảm ơn bạn về thông tin. –

+0

giải pháp tuyệt vời !! –

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