2015-07-21 92 views
0

我有這個函數在一個單獨的文件,並且它調用另一個JavaScript函數時加載。我需要這樣做才能達到JavaScript文本編輯器實現的「word_number」id。這個編輯器加載,然後我打電話給我的功能。」我不能讓我的addEventListener工作

function wordsChange() { 
if (window.addEventListener) { 
    document.getElementById('word_number').addEventListener('change', wordsK, false); 
} else { 
    document.getElementById('word_number').attachEvent('onchange', wordsK); 
}} 

function wordsK(){ 
alert('im reading');} 

的wordsChange函數被調用,但它不觸發wordsK功能。我不知道我在做壞事,和欣賞任何建議。

對不起對於 缺乏信息。我試着去使用從docksoft_stat插件CKEDITOR,顯示在底部有一個字計數器的輸出。 我需要這個信息才能正常運作。 謝謝大家對所有的快速解答。

+1

使用keydown/keyup事件而不是更改。 – jrath

+0

由於您的代碼目前是'wordK',因此應該只在'#word_number'更改後執行。當'wordsChange'運行時,你希望它執行嗎? – Inkbug

+0

我希望它在#word_number更改時執行,並且它不是textarea,它是編輯器的輸出。 (即時通訊使用CKEditor,編號來自插件,顯示編輯頁腳上的文字編號) – eidan

回答

0

假設:您正在使用<textarea>According to https://developer.mozilla.org/en-US/docs/Web/Events/change當您鍵入<textarea>-字段時,更改事件不會被觸發。只有當您點擊其他地方時纔會被觸發,但只有<textarea>

正如jrath建議的那樣,改用​​-event。每次在textare-element具有焦點的情況下按下鍵時,都會觸發此按鈕。

使用keyup事件可能不總是有效。可能出現的情況:通過點擊textarea,然後按下一個鍵(將觸發​​),然後在按住鍵的同時單擊textarea以外的某個位置,然後鬆開該鍵。 keyup事件將不會被解僱,因爲textarea字段已通過點擊其他地方而失去焦點。

+0

正如我之前說的,它不是一個textarea字段,它的輸出是編輯器。 (即時使用CKEditor和編號是從一個插件,顯示在編輯器的頁腳編號)。 – eidan

+0

「輸出」是什麼意思?那麼什麼樣的元素是'word_number'?爲該元素配置了哪些事件? – Zim84

+0

剛剛編輯我的問題解釋更好的問題。感謝你的回答。 – eidan

0

你沒有打電話給你的wordsChange()函數anywhare。請嘗試以下代碼:

'function wordsChange() { 
if (window.addEventListener) { 
document.getElementById('word_number').addEventListener('change', wordsK, false);} else { 
document.getElementById('word_number').attachEvent('onchange', wordsK);} 
} 

function wordsK(){alert('im reading');} 
// add below line to your code; 
wordsChange(); 

它會工作;

由於

+0

words將其從另一個函數中調用,等待編輯器(CKEditor)加載。 – eidan

+0

CKEditor是否通過ajax調用加載?以及正在編輯哪個字段以及哪個字段正在更新任何更改? 可以請發佈完整的代碼,以便我可以嘗試複製該問題。 – Vasimkhan

+0

剛剛編輯我的問題解釋更好的問題。感謝你的回答。 – eidan

0

的document.getElementById( 'word_number')的addEventListener( '變更',wordsK,假)。

這隻會在文本框聚焦時觸發。

你可以嘗試綁定'keypress'或'keyup'或'keydown'事件,否則使用jQuery綁定一個事件,如下所示 $(document.getElementById('word_number'))。on(「input」,wordsK );

這可能是解決CKEditor的

Detecting onChange events from a CKEditor using Jquery

+0

非常感謝。我可以用其他方法解決這個問題。即時通訊完成後,我會讓你知道。 – eidan

0

有用!

我只是找到一個替代解決方案的問題。正如我不能閱讀改變事件word_number的價值我安裝了@Alfonso(格拉西亞斯!)平變化插件的CKEDITOR並用於觸發我的功能:

function wordsChange() { 
for (var i in CKEDITOR.instances) { 
CKEDITOR.instances[i].on('change', function() { 
    alert('text changed!'); 
}); 
}} 

它的工作原理ferfectly,現在我可以做我想做的事情。 再次感謝您的幫助!