jQuery检索选定的文本

时间:2011-10-04 22:35:05

标签: javascript jquery select

我将此方法应用于<textarea></textarea>元素,但我想返回用户选择的html/text

$('.wysiwyg textarea').live('select',function(text){
    console.log(text);
});

我怎么能用这种方法呢?

3 个答案:

答案 0 :(得分:2)

在这里找到一些有用的代码:

http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html

function getSelected(){
  var t = '';
  if(window.getSelection){
    t = window.getSelection();
  }else if(document.getSelection){
    t = document.getSelection();
  }else if(document.selection){
    t = document.selection.createRange().text;
  }
  return t.toString();
}

所以你可以这样做:

$('.wysiwyg textarea').live('select',function(){
    var text=getSelected();
    console.log(text);
});

如下所示:

http://jsfiddle.net/2SjRx/

答案 1 :(得分:1)

您可以使用:

    function SelectText(element) {
    var text = document.getElementById(element);
    if ($.browser.msie) {
        var range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if ($.browser.mozilla || $.browser.opera) {
        var selection = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    } else if ($.browser.safari) {
        var selection = window.getSelection();
        selection.setBaseAndExtent(text, 0, text, 1);
    }
}

最后相应地绑定函数

这应该足以让你入门http://jsfiddle.net/TXQmC/11/ 它有点晚了,所以我只为firefox做了完整的绑定,因为你使用的是。

答案 2 :(得分:1)

我不想从某些浏览器返回空字符串,因此我花了几个小时更新了选择功能。经测试可与IE,Chrome,Firefox,Safari,Opera配合使用。真的希望jQuery有这个内置所以我不必乱用它。

function getSelected() {
    var text = "";
    if (window.getSelection
    && window.getSelection().toString()
    && $(window.getSelection()).attr('type') != "Caret") {
        text = window.getSelection();
        return text;
    }
    else if (document.getSelection
    && document.getSelection().toString()
    && $(document.getSelection()).attr('type') != "Caret") {
        text = document.getSelection();
        return text;
    }
    else {
        var selection = document.selection && document.selection.createRange();

        if (!(typeof selection === "undefined")
        && selection.text
        && selection.text.toString()) {
            text = selection.text;
            return text;
        }
    }

    return false;
}