2015-05-04 2 views
0

Я хочу изменить значение char в индексе каретки на «[br]».
Пример того, что я имею в виду: позволяет сказать, что у нас есть текстовое поле, и пользователь вводит какой-то текст, через некоторое время он вспомнил, что забыл начать новую линию, поэтому он перемещает свою каретку туда, где ему нужен новый line и нажмите return \ enter. Я хочу добавить к этому пункту строку «[br]», используя только javascript. вот что я получил в настоящее время:Как установить значение, где значение каретки соответствует значению [Javascript]

<textarea id="textarea" onkeydown="javascript:DoLine();"></textarea> 

А вот DoLine() функция:

function DoLine() { 
    if (event.keyCode == 13) { 
     var text = document.getElementById('textarea').value; 
     text += "[br]"; 
     if (text.indexOf("[br]") != text.length) { 
     var getTextAfter = text[text.lastIndexOf("[br]")] += "\r"; 
     } 
     document.getElementById('textarea').value = text; 
    } 
    } 

этот код добавляет «[ш]» в конце TEXTAREA instade того, где каретка находится. Я действительно не знаю, как получить индекс каретки, поэтому я мог бы просто преобразовать text var в массив символов, а затем добавить «[br]» по индексу каретки. Итак, у кого-нибудь есть представление о том, как я могу заставить свой код работать так, как я этого хотел? или любая идея, как получить местоположение каретки?
PS: по кареткой я имею в виду это:
enter image description here
Спасибо :)

+1

Посмотрите здесь: HTTP: //stackoverflow.com/questions/3308292/inserting-text-at-cursor-in-a-textarea-with-javascript/3308539#3308539 – Tyr

+0

Необходимо использовать encodeURIComponent для получения значения текстового поля с форматированием, чтобы вы могли добавьте новые строки. – frenchie

+0

@Tyr Спасибо! это сработало –

ответ

1

Благодарности к @Tyr я нашел ответ, эта функция зафиксировал его:

function insertTextAtCursor(el, text) { 
var val = el.value, endIndex, range; 
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") { 
    endIndex = el.selectionEnd; 
    el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex); 
    el.selectionStart = el.selectionEnd = endIndex + text.length; 
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") { 
    el.focus(); 
    range = document.selection.createRange(); 
    range.collapse(false); 
    range.text = text; 
    range.select(); 
    } 
} 
Смежные вопросы