0

我正在尝试用window.getSelection()方法来实现某些目标。我想通过一些操作在工具提示中获取选定的文本,例如编辑选定的文本,或删除选定的文本,并向该选择添加一些标签和注释,类似于x-editable。在 x-editable 中,我们不能直接编辑文本。

http://jsfiddle.net/ravimallya/ZXPSY/9/这是我正在使用的小提琴。我试图通过Annotator获得我想要的东西,但这在 IE7 或 8 中不起作用。而且这个很难与 asp.net 网站集成。

我尝试了Is it possible to show a qtip with a function call中提到的解决方案?但它不工作。另一个类似的问题如何在所选文本旁边显示工具提示?没有答案或适当的解决方案。

带有自定义内容的 Bootstrap Popover 或 qTip2 或任何其他此类解决方案或对当前小提琴的修复是最受欢迎的。

4

1 回答 1

0

我使用 jqueryUI 对话框找到了自己的解决方案。所以分享一下。它可能对其他试图实现相同目标的人有所帮助。需要包含 jquery 和 jqueryUI 库。稍后使用以下代码和脚本。

<div id="text">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus aliquam eros non odio fringilla, placerat feugiat turpis gravida. Vivamus ac porttitor metus. Aliquam a facilisis erat. Morbi a nisi nibh. Vestibulum volutpat gravida eros. Ut in tortor at magna gravida consectetur eget at dui. Vivamus eget justo eu libero mattis interdum. Morbi iaculis lorem ut felis commodo accumsan. Phasellus a tristique tellus, at lobortis neque. Proin quis tempus est. Morbi dignissim tempor justo at fringilla. Proin sit amet tortor mattis, euismod est eu, volutpat mauris.</p>
</div>

脚本

if (!window.mSelect) {
    mSelect = {};
}
mSelect.Selector = {};
mSelect.Selector.getSelected = function () {
    var txt = '';
    if (window.getSelection) {
        txt = window.getSelection();
    } else if (document.getSelection) {
        txt = document.getSelection();
    } else if (document.selection) {
        txt = document.selection.createRange().text;
    }
    return txt;
};

mSelect.Selector.mouseup = function () {
    var st = mSelect.Selector.getSelected();
    if (st != '') {
        $("#dialog-modal").dialog({
            modal: true,
            title: 'You selected ' + st,
            buttons: {
                "Add": function () {

                }
            }
        });
    } 
    else {
        alert("select some text");
    }
};
$(function () {
    $('#text').bind("mouseup", mSelect.Selector.mouseup);
});

add函数中,我们可以通过 ajax 发布选中的值。

但是,如果有人有比这个更好的解决方案(显示工具提示而不是对话框),请告诉我。

于 2013-06-20T11:05:58.917 回答