IE8-如何获取input光标所在位置(selectionstart)

  IE9+和标准浏览器支持输入对象的selectionStart属性,可以获取到光标所在输入空间中的位置,IE8-要想获取光标所在位置(selectionstart属性),需要使用range对象。

 

  IE8-如何获取input光标所在位置(selectionstart)源代码如下

<input type="text" id="txt" value="1234567" />
<input type="button" value="获取text光标位置" onclick="alert(getCaret(document.getElementById('txt')))" />
<script>
    function getCaret(el) {
        if (el.selectionStart) {//IE9-或者标准浏览器
            return el.selectionStart;
        } else if (document.selection) {//IE8-或者支持selection对象的浏览器
            el.focus();
            var r = document.selection.createRange();
            if (r == null) {
                return 0;
            }
            var re = el.createTextRange(), rc = re.duplicate();
            re.moveToBookmark(r.getBookmark());
            rc.setEndPoint('EndToStart', re);
            return rc.text.length;
        }
        return 0;
    }
</script>

  代码来源:http://stackoverflow.com/questions/263743/caret-position-in-textarea-in-characters-from-the-start

 

  或者

  javascript获取输入对象光标位置

function getCursortPosition (ctrl) {
    var CaretPos = 0;   // IE Support
    if (document.selection) {
    ctrl.focus ();
        var Sel = document.selection.createRange ();
        Sel.moveStart ('character', -ctrl.value.length);
        CaretPos = Sel.text.length;
    }
    // Firefox support
    else if (ctrl.selectionStart || ctrl.selectionStart == '0')
        CaretPos = ctrl.selectionStart;
    return (CaretPos);
}

  javascript设置输入对象光标位置

function setCaretPosition(ctrl, pos){
    if(ctrl.setSelectionRange)
    {
        ctrl.focus();
        ctrl.setSelectionRange(pos,pos);
    }
    else if (ctrl.createTextRange) {
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}

来源:http://www.oschina.net/code/snippet_4873_3394

加支付宝好友偷能量挖...


评论(0)网络
阅读(1308)喜欢(2)JavaScript/Ajax开发技巧