Это потому, что выбор очищается после первого клика.Поэтому у второй замены нет текста для переноса, поэтому просто добавьте [b][/b]
к текстовой области.
Попробуйте обернуть строки, которые выполняют замену, в условие if
, которое проверяет, было ли выбрано что-то:
if (txt !== undefined && txt.length > 0) {
txt = "[b]"+txt+"[/b]";
$('#reply').val(txt);
}
Ваша логика выглядит ошибочной, хотя.Представьте, что в текстовой области есть следующий текст:
Lorem ipsum dolor sit amet.
Если я выделю ipsum
и нажму кнопку #bold
, текстовая областьудалит все остальные слова и теперь просто скажет:
[b] ipsum [/ b]
Уже существует множество других текстовых редакторов jQuery.Это сэкономит вам много времени на использование одного из них, если это производственный проект.Если вы просто пытаетесь изучать jQuery, то продолжайте.