2016-01-29 30 views
0

Ckeditor是神奇的,但它被編程爲與我混亂。如何鏈接CK編輯器textarea中的計數字符?

我已經鏈接到CDN並實例化了一個給定ID cke_quotation的textarea。在原始的textarea中,我有一個jQuery的函數,在keyup和focusout上,有一個字符計數。現在我想將此函數鏈接到ckeditor引用,該引用的ID爲cke_quotation。但它不會工作。我究竟做錯了什麼?

回答

2

CKEditor不能在純文本區域上工作 - 它使用contenteditable元素來代替。如果您想傾聽您需要傾聽的關鍵事件,所謂的可編輯。

var editor = CKEDITOR.instances.quotation; 
editor.editable().on('keydown', function(evt){ 
    console.log('keydown', evt); 
    // You could call editor.getData() to get current editor 
    // contents and then count anything you like. 
}); 

但不是在尋找像​​你應該更像change想了解更多的「輸入不可知」事件事件(因爲變化可能是由不同的源引起的,如pastecut,拖放)。

然後,如果您正在尋找CKE的字數統計功能,那麼爲什麼還要創建自己的插件?你可以簡單地使用像wordcount插件。

+0

我在這裏失去了一些重要的東西。我沒有處理插件的經驗,所以我不知道如何實例化它們。我從textarea更改爲段落,使其contenteditable =「true」並進行測試以確保它發送數據。但是當我粘貼你提供的代碼時,它給了我一個錯誤: 「TypeError:undefined不是一個對象(評估'editor.editable()。')」 這是實例嗎?當你編寫可編輯時,你的意思是我應該使用提供該功能的jQuery插件,或者我應該用其他東西替換editable()? –

+2

首先,你不需要用'contenteditable'把textarea改成'p'。那麼,是的,這裏有幾個假設。在調用'CKEDITOR.replace'或'CKEDITOR.inline'方法之後,您需要使用此代碼(以便編輯器已經實例化)。而且您需要知道您的實例的名稱,它是在爲編輯器創建的元素的id之後獲取的。這裏我假設了「引用」,但是如果您更改了元素,那麼實例名稱是不同的。你可以通過檢查'CKEDITOR.instances'對象列出所有的實例。 –

+0

謝謝,它有幫助。我必須這樣寫:editor.on('change',function()...然後在函數下,var chars = editor.getData(); - 然後你在字符上做一個長度。確定你提到的getData是什麼, –