我的主要问题与将文本插入 Ajax 控件工具包 Html 编辑器的光标位置有关。这几天我一直在绞尽脑汁,终于到了解决这个问题的最后一站。我将设置一些上下文来更好地描述我的确切问题。
我在 ASP.Net 页面中使用 HtmlEditor,并尝试从 DropDownList 插入值。我正在使用客户端 javascript 来触发 selectedindexchanged 事件。例如,假设我在设计面板中有一些文本,如下所示:
123456789
1234[CaretPosition]56789
123456789
现在,我想将变量ddlText
准确地插入到插入符号的位置。我的代码现在的方式是将值插入到正确的水平位置,但它似乎忽略了我的选择在第二行的事实。输出将类似于以下内容:
1234[ddltext]56789
123456789
123456789
注意我的插入符号位置在第二行,但插入的文本出现在第一行。有没有办法让插入功能将文本插入到正确的水平和垂直位置?
这是我处理插入事件的脚本。
<script type="text/javascript">
$(document).ready(function () {
$('#<%=ddlFields.ClientID%>').change(function () {
var ddltext = $('#<%=ddlFields.ClientID%> option:selected').text();
insertText(ddltext)
});
});
function insertText(text) {
var editorField = document.getElementById('MainContent_Editor1_ctl02_ctl00').contentWindow.document.body.innerHTML;
var range = document.getElementById('MainContent_Editor1_ctl02_ctl00').contentWindow.getSelection().getRangeAt(0);
var selStart = range.startOffset;
var selEnd = range.endOffset;
var innerText = editorField.substring(0, selStart) + text + editorField.substring(selEnd, editorField.length);
document.getElementById('MainContent_Editor1_ctl02_ctl00').contentWindow.document.body.innerHTML = innerText;
}
</script>
我现在一直在反对这个要求,我真的可以用一双新的眼睛来看待它。