2010-08-29 6 views
17

Я хочу получить текстовый контент из contentEditable div через javascript. Каковы варианты этого? Я пробовал innerHTML, но он не работает.Получите текстовое содержимое из контентного контента div через javascript

+2

Если вы серьезно относитесь к оказанию помощи, пожалуйста, отправьте сообщение и пример того, что вы пытаетесь сделать, или тестовый пример для нас использовать для решения проблемы. – donohoe

ответ

5

использование JQuery и сделать

var content = $('#my-contenteditable-div').html();

также посмотреть следующие ссылки:

http://west-wind.com/Weblog/posts/778165.aspx

Extracting text from a contentEditable div

+22

действительно не нужно для jQuery здесь. – drewish

+0

Будет включать HTML для новых строк – gphilip

+0

будет включать все html вообще –

5

lblMailContent является идентификатор редактируемого поля.

var details= document.getElementById("lblMailContent").innerHTML; 

Положить этот код в clientClick. Это сработало для меня.

27

Почему бы не использовать TextContent для этого:

var contenteditable = document.querySelector('[contenteditable]'), 
    text = contenteditable.textContent; 

http://jsfiddle.net/E4W8y/1/

+4

Так как textContent не уважает строки новой строки (по крайней мере, в хроме) –

0

Использование текстового содержимого, работает хорошо в большинстве случаев Рабочий пример: jsfiddle (проверено в Safari)

1

Я решил это так, потому что мне нужен html-ввод:

message = $('<div>').html(
    $('#area').html() 
    .replace(/<(div|p|br)[^<]*?>/g, '&lt;br /&gt;') 
    .replace(/<([(i|a|b|u)^>]+)>(.*?)<\/\1>/gim, 
     function(v) { return '' + escape(v) + ''; }) 
).text(); 

Позволяет теги A, B, I, U и заменяют дивы и Ps с БЗОМ

+1

Вы уверены, что хотите анализировать HTML с регулярными выражениями? –

2

К сожалению, я обнаружил, что innerText является единственным способом сохранить в новых строки contenteditable узлов DOM. То, что я делаю (проверено только в хроме на данный момент), таково:

var innerText = editableDiv.innerText // using innerText here because it preserves newlines 
if(innerText[innerText.length-1] === '\n') 
    innerText = innerText.slice(0,-1)    // get rid of weird extra newline 
return innerText 
+0

Это должен быть принятый ответ, не используя jQuery. Кстати, я использую 'trim()', чтобы избавиться от начальных и конечных пробелов. –

Смежные вопросы