我在 javascript 中完成了一个函数,可以通过表达式更改一些缩写,所有这些都在 javascript 和 onkeyup 中。
我遇到的麻烦是这不适用于使用插件 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。
最佳答案
CKeditor 用 CKeditor 实例替换您的文本区域,然后忽略该文本区域。您正在寻找的是将您的函数绑定(bind)到 CKeditor 的 keyup 事件并更改编辑器的内容。合并 add code for event listener for keypress in ckeditor 上的答案和 How to find and replace text in CKEditor using Javascript?结果是这样的:
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');
我已经对此进行了测试,它还不能完美地工作,但它应该为您指明正确的方向。
关于php - CKEDITOR 和 javascript 函数出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157840/