从tinyMCE中的插入符号位置删除x个字符

从tinyMCE中的插入符号位置删除x个字符,tinymce,Tinymce,我正在做一个项目,用户可以输入一个特殊字符,然后用tab键自动完成值。这部分基本上可以工作,但我希望能够从插入符号位置之前删除x个字符。 例如,如果|是插入符号,我有以下文本@chr 我希望能够删除光标位置前的3个字符,例如,我将以@结束 我已经找到了一种使用下面的代码获取当前光标位置的方法,但是我还没有找到任何能够从该位置删除x个字符的方法 function getCaretPosition() { var ed = tinyMCE.get('txt

我正在做一个项目,用户可以输入一个特殊字符,然后用tab键自动完成值。这部分基本上可以工作,但我希望能够从插入符号位置之前删除x个字符。 例如,如果
|
是插入符号,我有以下文本
@chr

我希望能够删除光标位置前的3个字符,例如,我将以
@
结束

我已经找到了一种使用下面的代码获取当前光标位置的方法,但是我还没有找到任何能够从该位置删除x个字符的方法

  function getCaretPosition()
        {
            var ed = tinyMCE.get('txtComment');     // get editor instance
            var range = ed.selection.getRng().startOffset;     // get range
            return range;
        }

可以通过在当前插入符号位置创建结束符号来完成此操作:

var ed = tinyMCE.get("mce_0"); // get editor instance
var editorRange = ed.selection.getRng(); // get range object for the current caret position

var node = editorRange.commonAncestorContainer; // relative node to the selection

range = document.createRange(); // create a new range object for the deletion
range.selectNodeContents(node);
range.setStart(node, editorRange.endOffset - 3); // current caret pos - 3 
range.setEnd(node, editorRange.endOffset); // current caret pos
range.deleteContents();

ed.focus(); // brings focus back to the editor
要使用演示,请将插入符号放置在文本中的某个位置,然后单击顶部的“删除3”按钮删除前面的3个字符

请注意,我的演示是简化的,不做任何边界检查

演示:


兼容性是IE9+

您可以通过在当前插入符号位置创建一个结尾来实现:

var ed = tinyMCE.get("mce_0"); // get editor instance
var editorRange = ed.selection.getRng(); // get range object for the current caret position

var node = editorRange.commonAncestorContainer; // relative node to the selection

range = document.createRange(); // create a new range object for the deletion
range.selectNodeContents(node);
range.setStart(node, editorRange.endOffset - 3); // current caret pos - 3 
range.setEnd(node, editorRange.endOffset); // current caret pos
range.deleteContents();

ed.focus(); // brings focus back to the editor
要使用演示,请将插入符号放置在文本中的某个位置,然后单击顶部的“删除3”按钮删除前面的3个字符

请注意,我的演示是简化的,不做任何边界检查

演示:


兼容性是IE9+

谢谢,这非常有效。我会奖励你的赏金,但我必须等9个小时。当到达一行的最后一个字符时,它不起作用,并且上面的行中有字符。谢谢,这非常有效。我会奖励你的赏金,但我必须等9个小时,当到达一行的最后一个字符时,它不起作用,并且上面的行中有字符。