JQuery текстовый редактор - PullRequest
0 голосов
/ 07 декабря 2011

Я хочу создать текстовый редактор jquery, и я немного погуглил, и кое-что получилось, основная функциональность заключается в том, что когда пользователь выделяет текст в текстовой области, он добавляет [b] спереди и [/ b] в конце текста, но если пользователь снова нажимает ту же кнопку, он стирает все введенные данные и помещает только выделенный текст с [b] [/ b], вот код:

$('#bold').mousedown(function(e) {
    var txt = '';
    if (window.getSelection){
        txt = window.getSelection();
    }
    else if(document.getSelection){
        txt = document.getSelection();
    }
    else if(document.selection){
        txt = document.selection.createRange().text;
    }
    else return;

    txt = "[b]"+txt+"[/b]";

    $('#reply').val(txt); 
});

html

<input type="button" value="Bold" id="bold" />
<form action="" method="get">
<textarea name="reply" id="reply" cols="100" rows="30">Test</textarea>
</form>

1 Ответ

0 голосов
/ 07 декабря 2011

Это потому, что выбор очищается после первого клика.Поэтому у второй замены нет текста для переноса, поэтому просто добавьте [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, то продолжайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...