解决方案 »

  1.   

    我理解的是光标定位,你想定位在任意位置对不对? 比如这个方法是 setCursorPosition(控件ID,位置)
    能不能把代码贴上来看看
      

  2.   

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

  3.   

    下面是获取光标的位置的,就是在ie8下老是有问题,有的地方获取的是对的,可是有的地方就会跑到文本框第一个位置区了//获取多行文本框光标位置
        function getPositionForTextArea(obj) {//ctrl文本框
            var CaretPos = 0;
            var Sel = document.selection.createRange();
            var Sel2 = Sel.duplicate();
            Sel2.moveToElementText(obj);
            var CaretPos = -1;
            while (Sel2.inRange(Sel)) {
                Sel2.moveStart('character');
                CaretPos++;
            }
            return CaretPos; 
        }
      

  4.   

    就像qq空间@某个人后,我输入一个表情,这个表情正常情况下应该是在@XXX后面显示的,而我现在的却显示在它前面了,请解惑
      

  5.   

    这几天忙忘记来回复了,找到两个非常有用的帖子,估计你的代码也是从这里找的
    Get Caret:
    http://stackoverflow.com/questions/263743/how-to-get-caret-position-in-textarea
    Set Caret:
    http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area你说有的地方出错有的地方不出错,我这里是在IETest下面测试的,都没有问题,不知道你所说出错的是哪种情况?
      

  6.   

    可以参照此例子,这个对象是我用来在输入框的光标位置插入字符使用的,你可以研究一下:var TextUtil = {
    insertAtCaret:function(obj, str) {
    if (document.selection) {
    obj.focus();
            var sel = document.selection.createRange();
            sel.text = str;
            sel.select();
        } else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
            var startPos = obj.selectionStart,
                endPos = obj.selectionEnd,
                cursorPos = startPos,
                tmpStr = obj.value;
            obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
            cursorPos += str.length;
            obj.selectionStart = obj.selectionEnd = cursorPos;
        } else {
            obj.value += str;
        }
    },
    moveEnd:function(obj){
     obj.focus();
        var len = obj.value.length;
        if (document.selection) {
            var sel = obj.createTextRange();
            sel.moveStart('character',len);
            sel.collapse();
            sel.select();
        } else if (typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number') {
            obj.selectionStart = obj.selectionEnd = len;
        }
    }
    };
      

  7.   

    此方法当时使用的时候兼容IE,GOOGLE,火狐