js获取textarea或者input光标位置,控制光标位置


<head>
    <meta charset="UTF-8">
    <title></title>
</head>

<body>
    <textarea name="text" rows="12" cols="28" id="select"></textarea>
    <!--<input type="text" name="select" id="select" />-->
    <label for="number">设置值</label>
    <input type="text" id="number" style="width: 28px;" />
    <button type="button" id="button0">ClickMe</button>
    <button type="button" id="button1">ClickMe2</button>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
    /**
    * 获得光标位置兼容IE/FF
    * 
    例:
    var obj = document.getElementById("tx1");
    var pos = getCaretPosition(obj);
    alert("--"+pos);
    */
    function getCaretPosition(obj) {
        var result = 0;
        if(obj.selectionStart >= 0) { //IE以外 
            result = obj.selectionStart;
        } else { //IE 
            try {
                var rng;
                if(obj.tagName == "textarea") { //TEXTAREA 
                    rng = event.srcElement.createTextRange();
                    rng.moveToPoint(event.x, event.y);
                } else { //Text 
                    rng = document.selection.createRange();
                }
                rng.moveStart("character", -event.srcElement.value.length);
                result = rng.text.length;
            } catch(e) {
                throw new Error(10, "asdasdasd");
            }
        }
        return result;
    }
    var str = '1234567890';
    str = str.substring(0, str.length - 1);
    console.log(str)
    /**
    * 设置光标位置兼容IE/FF
    * @param tObj
    * @param sPos
    * 
    例:
     var obj =document.getElementById("tx1");  
       var sPos = obj.value.length-1;  
       setCaretPosition(obj, sPos);  
    */
    function setCaretPosition(tObj, sPos) {
        if(tObj && sPos) {
            if(tObj.setSelectionRange) {
                setTimeout(function() {
                    tObj.setSelectionRange(sPos, sPos);
                    tObj.focus();
                }, 0);
            } else if(tObj.createTextRange) {
                var rng = tObj.createTextRange();
                rng.move('character', sPos);
                rng.select();
            }
        }
    }

    $('#button0').click(function() {
        var input = document.getElementById('select');
        alert(getCaretPosition(input));
    });
    $('#button1').click(function() {
        var input = document.getElementById('select');
        var index = document.getElementById('number').value;
        setCaretPosition(input, index);
    })
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值