所以在我问之前我在这里读了一些相关的问题,但找不到我的问题的答案。希望这里的一些javascript大师可以找到这个并为我带来光明。
我为nicEdit创建了另一个按钮,一个视频按钮,想要在编辑器DIV中插入一些格式化文本(注意:nicEdit有内联DIV,没有iframe,没有textarea)。
这是我的按钮,从图像按钮重新创建:
var nicVideoOptions = {
buttons : {
'video' : {name : __('Insert Video'), type : 'nicEditorVideoButton'} //, tags : ['VIDEO:']
},
iconFiles : {'video' : '../movie.png'}
};
var nicEditorVideoButton = nicEditorAdvancedButton.extend({
addPane : function() {
this.vi = this.ne.selectedInstance.selElm().parentTag('A');
this.addForm({
'' : {type : 'title', txt : 'Insert Video URL'},
'href' : {type : 'text', txt : 'URL', 'value' : 'http://', style : {width: '150px'}}
},this.vi);
},
submit : function(e) {
var vidVal = this.inputs['href'].value;
if(vidVal == "" || vidVal == "http://") {
alert("Enter the video url");
return false;
}
this.removePane();
if(!this.vi) {
var tmp = 'javascript:nicVidTemp();';
this.ne.nicCommand("insertVideo",tmp);
// still nothing works
//this.vi = this.findElm('VIDEO:','href',tmp);
//this.vi = this.setContent('[video:' + this.inputs['href'].value + ']');
//nicEditors.findEditor('edit-comment').setContent('<strong>Some HTML</strong> here');
//this.vi = this.setContent('<strong>Some HTML</strong> here');
insertAtCaret(this.ne.selectedInstance, vidVal);
}
if(this.vi) {
// still nothing works
//this.vi.setAttributes({
//vidVal : this.inputs['href'].value
//});
//this.vi = this.setContent('[video:' + this.inputs['href'].value + ']');
//this.vi = this.setContent('<strong>Some HTML</strong> here');
}
}
});
nicEditors.registerPlugin(nicPlugin,nicVideoOptions);
按钮就在那里,表格就像图像按钮一样,所以没关系。但无法将文本插入DIV。最终输出将取自:('[video:' + this.inputs['href'].value + ']')
并显示在编辑器DIV中:[video:http//some.com/video-url]
如你所见,我盲目地触及一切:)
此插入取自: http://www.scottklarr.com/topic/425/how-to-insert-text-into-a-textarea-where-the-cursor-is/
function insertAtCaret(areaId,text) { var txtarea = document.getElementById(areaId); var scrollPos = txtarea.scrollTop; var strPos = 0; var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? "ff" : (document.selection ? "ie" : false ) ); if (br == "ie") { txtarea.focus(); var range = document.selection.createRange(); range.moveStart ('character', -txtarea.value.length); strPos = range.text.length; } else if (br == "ff") strPos = txtarea.selectionStart; var front = (txtarea.value).substring(0,strPos); var back = (txtarea.value).substring(strPos,txtarea.value.length); txtarea.value=front+text+back; strPos = strPos + text.length; if (br == "ie") { txtarea.focus(); var range = document.selection.createRange(); range.moveStart ('character', -txtarea.value.length); range.moveStart ('character', strPos); range.moveEnd ('character', 0); range.select(); } else if (br == "ff") { txtarea.selectionStart = strPos; txtarea.selectionEnd = strPos; txtarea.focus(); } txtarea.scrollTop = scrollPos; }
流程:我点击按钮,弹出一个表格,填写输入文本框,点击查询按钮,文本应该出现在编辑器DIV中。
我希望我能说清楚。任何帮助都会得到很大的帮助
由于
答案 0 :(得分:1)
我实际上认为我看到了你的问题。 insertAtCaret
函数需要一个用于执行getElementById(id)
的ID。看来你正在传递一个对nicEdit对象的引用。
我建议你