从弹出窗体中将文本插入div,然后使用javascript重写插入的文本

时间:2010-04-30 03:28:42

标签: javascript

所以在我问之前我在这里读了一些相关的问题,但找不到我的问题的答案。希望这里的一些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中。

我希望我能说清楚。任何帮助都会得到很大的帮助

由于

1 个答案:

答案 0 :(得分:1)

我实际上认为我看到了你的问题。 insertAtCaret函数需要一个用于执行getElementById(id)的ID。看来你正在传递一个对nicEdit对象的引用。

我建议你

  1. 在页面上为textarea创建一个ID,并传入您的ID。
  2. 修改insertAtCaret函数以不按ID搜索,而是使用您传入的textarea ref。