我无法让我的addEventListener工作

时间:2015-07-21 07:23:03

标签: javascript addeventlistener

我将此函数放在一个单独的文件中,并在调用另一个javascript函数时加载。我需要这样做以达到" word_number" javascript文本编辑器实现的id。这个编辑器加载然后我调用我的函数。"

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输出,它在底部显示一个字计数器。 我需要这个信息来操作。 谢谢大家的所有快速答案。

4 个答案:

答案 0 :(得分:0)

假设:您使用的是<textarea>According to https://developer.mozilla.org/en-US/docs/Web/Events/change当您输入<textarea>字段时,不会触发更改事件。只有当您点击<textarea>以外的其他地方时才会触发它。

正如jrath建议的那样,请使用keydown - 事件。每当按下一个键而textare-element具有焦点时,就会触发这个。

使用keyup事件可能并不总是有效。可能的情况:您通过单击它来关注textarea,然后按一个键(keydown将被触发),然后在仍然按住键的同时单击textarea之外的某个位置,然后释放键。由于keyup字段已通过点击其他位置而失去焦点,因此不会触发textarea事件。

答案 1 :(得分: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();

它会起作用;

由于

答案 2 :(得分:0)

document.getElementById('word_number')。addEventListener('change',wordsK,false);

只有在文本框获得焦点时才会触发。

您可以尝试使用绑定'keypress'或'keyup'或'keydown'事件,否则使用jQuery绑定事件,如下所示 $(的document.getElementById( 'word_number'))上( “输入”,wordsK);

这可能对ckeditor有用

Detecting onChange events from a CKEditor using Jquery

答案 3 :(得分:0)

<强>解决!!

我只是为这个问题找到了另一种解决方案。因为我无法在更改事件中读取word_number的值,我为CKeditor安装了@Alfonso(Gracias!)onchange插件并用于触发我的函数:

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

它完美地工作,现在我可以做任何我想做的事。 再次感谢大家的帮助!!