2

我有一个 Ajax HTML 编辑器和它上面的下拉菜单。在从下拉列表中选择一个项目时,我希望将下拉列表中所选项目的文本粘贴到 AJAX HTML 编辑器中的当前光标位置。有任何想法吗..?

4

1 回答 1

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 编辑器的光标位置从下拉列表中插入文本的功能。

 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 编辑器位于更新面板内,因此在部分回发后脚本停止工作,我在这里找到了帮助。

希望这对你也有用......干杯..!!

于 2012-05-11T16:10:55.343 回答