我不能让我的addEventListener工作
我有这个函数在一个单独的文件,并且它调用另一个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,显示在底部有一个字计数器的输出。 我需要这个信息才能正常运作。 谢谢大家对所有的快速解答。
假设:您正在使用<textarea>
。 According to https://developer.mozilla.org/en-US/docs/Web/Events/change当您键入<textarea>
-字段时,更改事件不会被触发。只有当您点击其他地方时才会被触发,但只有<textarea>
。
正如jrath建议的那样,改用-event。每次在textare-element具有焦点的情况下按下键时,都会触发此按钮。
使用keyup
事件可能不总是有效。可能出现的情况:通过点击textarea
,然后按下一个键(将触发),然后在按住键的同时单击textarea
以外的某个位置,然后松开该键。 keyup
事件将不会被解雇,因为textarea
字段已通过点击其他地方而失去焦点。
你没有打电话给你的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();
它会工作;
由于
的document.getElementById( 'word_number')的addEventListener( '变更',wordsK,假)。
这只会在文本框聚焦时触发。
你可以尝试绑定'keypress'或'keyup'或'keydown'事件,否则使用jQuery绑定一个事件,如下所示 $(document.getElementById('word_number'))。on(“input”,wordsK );
这可能是解决CKEditor的
非常感谢。我可以用其他方法解决这个问题。即时通讯完成后,我会让你知道。 – eidan
有用!
我只是找到一个替代解决方案的问题。正如我不能阅读改变事件word_number的价值我安装了@Alfonso(格拉西亚斯!)平变化插件的CKEDITOR并用于触发我的功能:
function wordsChange() {
for (var i in CKEDITOR.instances) {
CKEDITOR.instances[i].on('change', function() {
alert('text changed!');
});
}}
它的工作原理ferfectly,现在我可以做我想做的事情。 再次感谢您的帮助!
使用keydown/keyup事件而不是更改。 – jrath
由于您的代码目前是'wordK',因此应该只在'#word_number'更改后执行。当'wordsChange'运行时,你希望它执行吗? – Inkbug
我希望它在#word_number更改时执行,并且它不是textarea,它是编辑器的输出。 (即时通讯使用CKEditor,编号来自插件,显示编辑页脚上的文字编号) – eidan