Показать сообщение отдельно
  #8 (permalink)  
Старый 25.08.2011, 12:04
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

А как можно выделить не весь текст, а часть?
Есть такой плагин http://www.jankoatwarpspeed.com/post...uery-CSS3.aspx на jQuery, но у него есть один недостаток, который хочется устранить.
Если выделяю какой-то текст с целью скопировать или отредактировать, то всплывающая панель с инструментами не нужна. Я сделал кнопку, которая ее закрывает, но при этом теряется выделение текста.
$(document).ready(function() {
            var mouseX = 0;
            var mouseY = 0;
            $("#abc").mousemove(function(e) {
                // получаем координаты курсора мыши
                mouseX = e.pageX;
                mouseY = e.pageY;
            });
            $("#abc").mousedown(function() {
                $("#menu").fadeOut("1000");
            });
            $("#abc").select(function() {
                // получаем координаты мыши в показанном меню
                $("#menu").css("top", mouseY - 5).css("left", mouseX + 10).fadeIn("1000");
            });
            $("#bold").click(function() {
                wrapText("[b]", "[/b]");
                $("#menu").fadeOut("1000");
            });
            $("#italic").click(function() {
                wrapText("[i]", "[/i]");
                $("#menu").fadeOut("1000");
            });
            $("#underline").click(function() {
                wrapText("[u]", "[/u]");
                $("#menu").fadeOut("1000");
            });
            $("#udar").click(function() {
                wrapText("[ud]", "[/ud]");
                $("#menu").fadeOut("1000");
            });
            $("#link").click(function() {
                var url = prompt("Введите URL", "http://");
                if (url != null)
                    wrapText("[url=" + url + "]", "[/url]");
                $("#menu").fadeOut("1000");
            });
            $("#close").click(function() {
                wrapText("", "");
                $("#menu").fadeOut("fast");
            });
            function wrapText(startText, endText){
                // Получаем текст перед выделением
                var before = $("#abc").val().substring(0, $("#abc").caret().start);
                // Получаем текст после выделения
                var after = $("#abc").val().substring($("#abc").caret().end, $("#abc").val().length);
                // Объединяем текст перед выделением, измененное выделение и текст после выделения
                $("#abc").val(before + startText + $("#abc").caret().text + endText + after);
            }
        });

Подскажите, пожалуйста, как можно закрыть панельку выделив заново текст между before и after?
Ответить с цитированием