Есть такой плагин
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?