0

私は、JavaScriptとonkeyupのすべてで、式によっていくつかの略語を変更できるJavaScriptで関数を実行しました。

私が遭遇した問題は、プラグインCKEDITORを使用するテキストエリアではこれが機能しないことです。

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 インスタンスに置き換え、テキストエリアを無視します。あなたが探しているのは、関数を 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 に答える