使用jQuery将光标位置处的文本插入编辑器
我正在尝试使用jQuery向现有的CKEditor添加一段文本。 这需要在单击链接时完成 我尝试了这个解决方案,它适用于常规文本区域,但不适用于CKEditor:使用jQuery将光标位置处的文本插入编辑器,jquery,ckeditor,Jquery,Ckeditor,我正在尝试使用jQuery向现有的CKEditor添加一段文本。 这需要在单击链接时完成 我尝试了这个解决方案,它适用于常规文本区域,但不适用于CKEditor: jQuery.fn.extend({ insertAtCaret: function(myValue) { return this.each(function(i) { if (document.selection) { //For browsers like Internet Explorer
jQuery.fn.extend({
insertAtCaret: function(myValue) {
return this.each(function(i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
} else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos, this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
})
}
});
还有一个选项可以使用:$(“#editor”).val()
,但这会将文本追加到末尾或开头,而不是光标
那么,有没有办法做到这一点呢?CKEditor本身有一种插入文本的机制。如果您直接更新
文本区域
,实际上您绕过了某些机制,编辑器必须跟踪输入的文本。试试这个:
CKEDITOR.instances.IDofEditor.insertText('some text here');
你应该使用这个
$.fn.insertAtCaret = function (myValue) {
myValue = myValue.trim();
CKEDITOR.instances['idofeditor'].insertText(myValue);
};
我想我应该提到的是,如果您使用的是用于ckeditor的jQuery适配器,那么您可以通过jQuery插入文本,这样看起来更干净一些
$('textarea#id_body').ckeditor().editor.insertText('some text here');
或者如果您正在插入HTML
$('textarea#id_body').ckeditor().editor.insertHtml('<a href="#">text</a>');
$('textarea#id_body').ckeditor().editor.insertHtml(“”);
我需要类似的东西。我使用的是CKEditor 3.6(由于预算),JQuery和Bootstrap。我想要一个按钮列表,当点击到CKeditor的主体中时,可以插入一些文本。我从数据元素创建了一个按钮列表,然后添加了一个单击事件。我的对象是一个带有数据属性的输入按钮,我读取该属性以获取要粘贴的val
.insertText(“texthere”)将为您提供将值放置在光标所在位置所需的操作
$(函数(){
$(“.dataelement”)。单击(函数(){
InsertDataElement($(this.data(“valtxt”));
});
});
函数InsertDataElement(valtxt){
CKEDITOR.instances['FullDescription'].insertText(valtxt);
}
太棒了!非常感谢。我做了一个小改动:CKEDITOR.instances[$(this.attr(“id”)].insertText(myValue)所以我不需要担心身份证。你是国王