2013-10-01 3 views
0

Я использовал insertAtCaret, чтобы вставлять текст в текущую позицию курсора для текстовых полей, однако, когда текстовое поле становится связанным с htmleditorextender, оно терпит неудачу (я думаю, потому что текстовое поле теперь является дочерним элементом htmleditorextender или, возможно, он создает iframe?).Найти текущую позицию курсора для текстового поля с помощью htmleditorextender

Вот мой javascript insertAtCaret, который отлично работает, когда нет htmleditorextender. Текстовым полем, связанным с htmleditorextender, является txtEmailBody. Нужно ли мне ссылаться на txtEmailBody по-другому?

function insertAtCaret(text) { 
    var txtarea = document.getElementById("<%=txtEmailBody.ClientID%>") 
    var scrollPos = txtarea.scrollTop; 
    var strPos = 0; 
    var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? 
    "ff" : (document.selection ? "ie" : false)); 
    if (br == "ie") { 
     txtarea.focus(); 
     var range = document.selection.createRange(); 
     range.moveStart('character', -txtarea.value.length); 
     strPos = range.text.length; 
    } 
    else if (br == "ff") strPos = txtarea.selectionStart; 

    var front = (txtarea.value).substring(0, strPos); 
    var back = (txtarea.value).substring(strPos, txtarea.value.length); 
    txtarea.value = front + text + back; 
    strPos = strPos + text.length; 
    if (br == "ie") { 
     txtarea.focus(); 
     var range = document.selection.createRange(); 
     range.moveStart('character', -txtarea.value.length); 
     range.moveStart('character', strPos); 
     range.moveEnd('character', 0); 
     range.select(); 
    } 
    else if (br == "ff") { 
     txtarea.selectionStart = strPos; 
     txtarea.selectionEnd = strPos; 
     txtarea.focus(); 
    } 
    txtarea.scrollTop = scrollPos; 

} 

Спасибо.

+0

это будет вставлять текст в определенном положении, но мне еще нужно найти текущую позицию курсора, так что TXT может быть вставлен в этот момент: SSED

ответ

0

Ответ здесь http://jsfiddle.net/VzbYJ/32/

Просто измените ссылку на htmleditorextender следующим образом:

$(".btn").click(function() { 
     var el = $find("<%= HtmlEditorExtender3.ClientID %>")._editableDiv; 
     pasteHtmlAtCaret("Some <b>random</b> text", el); 
    }); 
Смежные вопросы