2014-09-24 33 views
0

用例:我为CKEditor构建了一个自定义的Acronym插件。因此用户可以通过对话框弹出插入首字母缩写或选择文本并将其转换为首字母缩写词。无论哪种情况,我都会添加一个<span>来进行一些自定义样式和操作。如何在退格中删除插入的<span>?

像这样的事情<span class="acronym">test</span>

问题:在编辑器后,我插入的缩写。如果我使用退格删除,说我删除了关闭</span>并开始再次输入。一切都被添加到首字母缩写词范围内。

像这样的事情<span class="acronym">test typing something

我创建跨度为每CKEditor所以它的加入收盘</span>即使我删除它。所以光标留在跨度内。

是否有办法检测并删除整个首字母缩略词范围。如果打开或关闭跨度被删除?

回答

0

我使用的逻辑:在退格按键上,获取光标下的当前元素,并检查它的首字母缩略词元素。如果是,请删除。

$('html').keyup(function (e) { 
    if (e.keyCode == 8) { 
     var editor = CKEDITOR.instances.editable, 
     sel = editor.getSelection(); 
     var ele = sel.getStartElement(); 
     if(ele.getAttribute('class') == 'acronym'){ 
      ele.remove(); 
     } 
    } 
}); 

我无法使用CKEditor的占位符插件,如下面的注释中所述。

探索其他选项。在此之前,接受这是正确的答案。

1

查看Placeholder plugin。它基于widget system,你可以很容易地build your own widget这将代表首字母缩略词。

+0

感谢@Reinmar为您的笔记。我无法使用占位符插件。因为我应该能够将选定的文本转换为Acronym。所以,我实现了以下逻辑。在退格键按下时,我得到当前的DOM并检查它的首字母缩略词DOM,如果是的话,我删除它。我尚未查看CKEDitor小部件SDK。 – 2014-09-26 06:35:19