我的主要問題在於將文本插入到Ajax控件工具包Html Editor的光標位置。這幾天我一直在絞盡腦汁,而我終於在解決問題的最後一站。我將建立一個小環境來更好地描述我的確切問題。將文本插入所見即所得的編輯器問題
我在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>
我一直在抨擊我的頭靠在了一下這一要求,現在,我真的可以使用一雙嶄新的眼睛就可以了。