0

我已经在 javascript 中完成了一个函数,它能够通过它们的表达式更改一些缩写,所有这些都在 javascript 和 onkeyup 中。

我遇到的麻烦是这在使用插件CKEDITOR的textarea上不起作用,

当我禁用ckeditor时,它工作正常。

这是我的代码:

<script type="text/javascript">
var abbreviations = {
        "ABS": "Le débiteur est absent, nous le relançons par courrier. Nous agendons également une visite domiciliaire s'il s'avérait que ce dernier restait sans réponse.",




};

function abbrReplace(el, abbrs) {
    if (!el || !abbrs) {
        return false;
    }
    else {
        var val = el.value,
            words = val.split(/\s/);
        for (var i = 0, len = words.length; i<len; i++) {
            if (abbrs[words[i]]) {
                words[i] = abbrs[words[i]];
            }
        }
        return words.join(' ');
    }
}

document.getElementById("suivi").onkeyup = function(){
    this.value = abbrReplace(this, abbreviations);
};


</script>

我真的迷路了,我已经尝试了很多方法来完成这项工作。

任何帮助将不胜感激。

亲切的问候。

SP。

4

1 回答 1

2

CKeditor 用 CKeditor 实例替换您的 textarea,然后忽略 textarea。您正在寻找的是将您的函数绑定到 CKeditor 的 keyup 事件并更改编辑器的内容。结合在 ckeditor 中为按键添加事件侦听器代码如何使用 Javascript 在 CKEditor 中查找和替换文本的答案?结果是这样的:

var abbreviations = ...;

function abbrReplace(el, abbrs) {
    ...changed to accept a piece of text instead of an element...
}

CKEDITOR.on('instanceCreated', function(e) {
    e.editor.on('contentDom', function() {
        e.editor.document.on('keyup', function(event) {
            // keyup event in ckeditor
            old_text = e.editor.getData();
            new_text = abbrReplace(old_text, abbreviations);
            e.editor.setData(new_text);
        });
    });
}); 

CKEDITOR.replace('suivi');

我已经对此进行了测试,它还不能完美地工作,但它应该为您指明正确的方向。

于 2012-10-31T13:23:48.213 回答