WYSIWYG - оставить выделенную текстовую область после того, как она окружена тегами? - PullRequest
0 голосов
/ 17 мая 2011

Редактировать: Так же, как я опубликовал это, я нашел кусок кода, который делает это легко. : D

В этом сообщении есть решение jQuery, которое идеально подходит для меня.


У меня есть скрипт, который добавляет теги BBCode вокруг выделенного текста в текстовой области, когда пользователь нажимает кнопку. После нажатия кнопки теги добавляются, и я снова фокусируюсь на области текста, используя textarea.focus() но в то время как текст перемещен из-за добавленных тегов, выделение текста находится в том же положении, что и до добавления тегов. В результате то, что сейчас выделено, не является исходным выделенным текстом.

Вот код для текстовой области, как сейчас:

$('div[id*="custom_button"]').click(function () {
    var start = textarea[0].selectionStart;
    var end = textarea[0].selectionEnd;
    var replacement = '[stuff]' + textarea.val().substring(start, end) + '[/stuff]';
    textarea.val(textarea.val().substring(0, start) + replacement + textarea.val().substring(end, textarea.val().length));
    textarea.focus()
});

Я думал о том, как каким-то образом получить выделенный текст, затем найти его после добавления тегов и, наконец, выбрать его заново ... это вообще возможно? Есть ли какое-то простое решение, которое мне не хватает?

1 Ответ

1 голос
/ 21 июня 2011

Попробуйте добавить эту строку до textarea.focus():

textarea.selectionEnd = (replacement.length)+end;
...