【问题标题】:Insert Text at Cursor Position in Ajax HTML Editor, using client Script使用客户端脚本在 Ajax HTML 编辑器的光标位置插入文本
【发布时间】:2012-05-09 04:10:33
【问题描述】:

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

【问题讨论】:

  • @jaredhoyt 嗨,感谢您的回复,但在我的情况下它是针对 TextArea 的,它是 Ajax HTML 编辑器。我通过提供在呈现 HTML 编辑器时最终创建的 TextArea 的 id 来尝试代码。然后它卡在“.focus()”函数上,出现错误说“.focus 不受支持,因为控件是禁用或无法访问”

标签: html ajax editor cursor position


【解决方案1】:

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

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

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

【讨论】:

  • 根本不适合我。你能进一步解释它应该如何工作吗?另外,它在哪些浏览器上进行了测试?
猜你喜欢
  • 2016-08-01
  • 1970-01-01
  • 2022-07-14
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多