2012-03-27 142 views
3

我有一個tinyMCE textarea #frmbody,並使用它的jquery實例。使用tinyMCE獲取內容?

<textarea class="tinymce" name="frmbody" id="frmbody" cols="30" rows="20"></textarea> 

我試圖獲取作爲用戶類型的textarea的內容。

$("#frmbody").live('keyup', function(e) { 
    alert("keyup"); 
}); 

上面的代碼不工作,我不知道爲什麼。如果我刪除了tinyMCE實例,上面的代碼工作正常。有任何想法嗎?

+0

不知道,但很可能是tinyMCE創建(或重新創建)一個你實際輸入的不同textarea,所以'#frmbody'從來沒有任何關鍵活動。 – Mikhail 2012-03-27 18:33:46

+0

我也在想。我會繼續挖掘和搜索。謝謝 – Mike 2012-03-27 18:34:54

+0

唯一的其他事情是,當我檢查$ _POST值時,frmbody就在那裏。 – Mike 2012-03-27 18:36:10

回答

2

這是因爲TinyMCE的一個實例不是真正的textarea,所以沒有檢測到keyup事件。改爲嘗試onchange callback

0

這是很容易寫的自己的處理程序,並把它分配給編輯iframe文件。 有喜歡keyUp

已經定義各種事件處理程序TinyMCE的下面是一個自己的處理程序分配給編輯器IFRAME文檔

var my_handler = function(event) { 
    alert('my handler fired!'); 
}; 

var ed = tinymce.get('my_editor_id'); 
$(ed.getDoc()).bind('keyup', my_handler); 
0

TinyMCE的隱藏的文本區域,並創建一個HTML容器的標準方式。如果您在包裝盒中寫入名爲"TEXTAREANAME_ifr"的iFrame內容。

那麼試試這個:

$("#frmbody_ifr").live('keyup', function(e) { 
    alert("keyup"); 
}); 

我覺得作爲Thariama已經表示,從TinyMCE的的事件處理程序將是最好的方式。

1

人們可以只用搶編輯器的內容:

tinymce.activeEditor.getContent(); 

如果您要附加一個onchange事件,根據該頁面,http://www.tinymce.com/wiki.php/api4:class.tinymce.Editor,使用下面的代碼創建編輯:

var ed = new tinymce.Editor('textarea_id', { 
    init_setting_item: 1, 
    ... 
}, tinymce.EditorManager); 

ed.on('change', function(e) { 
    var content = ed.getContent(); 
    $("#textarea_id").val(content); // update the original textarea with the content 
    console.log(content); 
}); 

ed.render(); 

請注意,當用戶沒有重點,按Enter或按下工具欄按鈕而不是每次擊鍵時,onchange都會觸發。