在Firefox, Chrome浏览器中,如果我们想要选取一段文本框中的内容,我们可以使用setSelectionRange(startIndex, endIndex)方法。

  但在IE8其更早版本中,这个方法是不支持的,一般我们使用范围选择部分文本。要选择文本框中的部分文本,必须首先使用IE 在所有文本框上提供的createTextRange()方法创建一个范围,并将其放在恰当的位置上。然后,再使用moveStart()和moveEnd()这两个范围方法将范围移动到位。不过,在调用这两个方法以前,还必须使用collapse()将范围折叠到文本框的开始位置。此时,moveStart()将范围的起点和终点移动到了相同的位置,只要再给moveEnd()传入要选择的字符总数即可。最后一步,就是使用范围的select()方法选择文本。

例如有这么一个文本框:

<textarea id="text">sssssssssssse  aaaa</textarea>

其样式如下:

textarea {
    width: 200px;
    height: 200px;
}
textarea:focus {
    border: 2px red solid;
}

如果想选择文本框中的第3个到第10个字符之前的文本,可以采用如下方法:

function selectText(selector, startIndex, endIndex) {
    var value = selector.value;
    if(selector.setSelectionRange) {
        selector.setSelectionRange(startIndex - 1, endIndex); //Chrome, Firefox
    } else {
        //IE8
        var range = selector.createTextRange();
        range.collapse(true);
        range.moveStart("character", startIndex - 1);
        range.moveEnd("character", endIndex - startIndex + 1);
        range.select();
    }
}
var obj = document.getElementById('text');
selectText(obj, 3, 10);

如果想把鼠标焦点移到最后,可以采用方法如下:

function moveToEnd(selector) {
    var value = selector.value;
    if(selector.setSelectionRange) {
        selector.setSelectionRange(value.length, value.length); //Chrome, Firefox
    } else {
        //IE8
        var range = selector.createTextRange();
        range.collapse(true);
        range.moveStart("character", value.length);
        range.moveEnd("character", 0);
        range.select();
    }
}
var obj = document.getElementById('text');
moveToEnd(obj);
selectText(obj, 3, 10);

 

posted on 2014-03-03 21:06  寒岁青松  阅读(1165)  评论(0编辑  收藏  举报