在tinyMCE编辑器中,将插入符号移动到单词的末尾
Move caret to the end of a word in a tinyMCE editor
我试图为我的tinyMCE编辑器构建一个函数,该函数在键入时使用span标签包装某些单词,到目前为止,我有这个,我在初始化tinyMCE实例时在init_instance_callback
选项中使用:
function(ed) {
ed.on('keyup', function () {
var editor = tinyMCE.get('content'),
regex = new RegExp('test|abc', 'gi'),
oldContent = editor.getContent(),
newContent = oldContent.replace(regex, '<span style="background-color: yellow;">$&</span>');
// Save cursor position
var marker = editor.selection.getBookmark(2);
// Set new content in editor
editor.setContent(newContent);
// Move cursor to where it was
editor.selection.moveToBookmark(marker);
});
}
下面是一个工作示例:http://fiddle.tinymce.com/Jjeaab
它工作得很好,而你正在打字,但只要你输入一个匹配的单词(在这种情况下"测试"或"abc")然后插入符号移动到单词的开头,我相信这是因为我添加额外的字符与span元素,所以书签没有正确设置后,单词被包装,有办法解决这个问题吗?
也许您可以插入一个新的Node而不是替换所有的内容。它将为您管理定位。
您只需要在此之前删除匹配的字符串(我让您检查如何正确执行)。
下面是一个例子:
ed.on('keyup', function () {
var editor = tinyMCE.get('content'),
regex = new RegExp('test|abc', 'i');
var match = editor.getContent().match(regex);
if (match) {
// Here remove the "match[1].length" last character
// Then add the new Node, it will set the cursor just after it
editor.selection.setNode(editor.dom.create('span', {style : 'background-color: yellow;'}, match[1]));
}
});
您可能还必须查看您的RegExp以防止匹配您创建的节点(您只想匹配用户键入的字符串->而不是被span标记包围)。
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- FabricJs-限制主对象内添加对象的移动区域
- 当鼠标悬停在文本中的单词上时显示警报
- 如何从画布上的某个移动事件中获取X和Y
- 触摸移动时切换到新元素
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 拆分单词jquery
- 停止jQuery UI滑块移动超过给定值
- 如何让程序检查所选单词中是否有按键
- 谷歌电子表格脚本为包含某个单词的行着色,并自动将该行移动到另一张工作表
- 当一个单词被动画时移动文本
- 如何将光标移动到文本区域的下一个/上一个单词
- 在tinyMCE编辑器中,将插入符号移动到单词的末尾
- 如何一次显示一个段落的一个新单词,通过按键或鼠标点击移动
- 将单个字母单词移动到新行