我正在开发一个项目,用户可以在其中输入特殊字符,然后使用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;
}
答案 0 :(得分:2)
您可以通过在当前插入位置创建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个字符。
请注意,我的演示已经过简化,并且不会进行任何边界检查。
演示:http://codepen.io/anon/pen/dWVWYM?editors=0010
兼容性是IE9 +