使用客户端脚本在Ajax HTML编辑器中的光标位置插入文本

时间:2012-05-09 04:10:33

标签: html ajax editor cursor position

我有一个Ajax HTML编辑器和一个Dropdown。 在选择项目时,我需要将下拉列表中所选项目的文本粘贴到AJAX HTML编辑器中的当前光标位置。 任何想法..?

1 个答案:

答案 0 :(得分:3)

是的,在第三天结束时,我终于找到了我的问题的解决方案,在此发布,以便有人可以节省宝贵的时间重新发明轮子。

这是我的Ajax ATML编辑器:

<Ajax:Editor ID="EdtrHTML" runat="server" />

我希望下拉列表中的选定文本粘贴在HTML编辑器中的当前光标位置,因此我调用函数在下拉列表的“更改”事件中插入文本(InsertAtCursor)。

作为函数InsertAtCursor的参数,我传递了在呈现HTML编辑器时创建的IFrame的ID。

 $(document).ready(function () {
            $('#<%:DropDownID.ClientID%>').change(function () {
            var ddltext = $('#<%:DropDownID.ClientID%> option:selected').text();
            var ddltext = ' [' + ddltext + '] '
            InsertAtCursor(idofHTMLEditorIFrame, ddltext);//Function for Insertion
        });
    });

这是从Ajax HTML Editor光标位置的下拉列表中插入Text的函数。

 function InsertAtCursor(myField, myValue) {

        if (document.selection) {
            myField.focus();
            sel = document.selection.createRange();
            sel.text = myValue;
        }

        else if (myField.selectionStart == 0 || myField.selectionStart == '0') {
            var startPos = myField.selectionStart;
            var endPos = myField.selectionEnd;
            myField.value = myField.value.substring(0, startPos) + myValue +
                        myField.value.substring(endPos, myField.value.length);
        }
        else {
             myField.value += myValue;
        }
    } 

在我的情况下,我的Ajax编辑器位于“更新”面板中,因此在部分回发后,脚本停止工作,我找到了帮助here

希望这也适合你......干杯...... !!