js光标

function testAbc(Obj){
if(notEmpty(Obj)){
var begins=getCursortPosition(Obj);
/*if( begins >= 0 && begins<=4){
begins = 2;
}else if(begins >=5 && begins<=7){
begins=5;
}else{
begins=8;
}
*/
//id("test").value =begins;
switch(true){
case begins>= 0 && begins <= 4:
begins =2;break;
case begins>= 5 && begins <= 7:
begins =5;break;
case begins>= 8 && begins <= 10:
begins =8;break;
case begins>= 11 && begins <= 12:
begins =11;break;
case begins>= 13 && begins <= 15:
begins =13;break;
default:
begins=0;break;



set_caret_positionfunction(Obj,begins,begins+2);
}
}
function set_caret_positionfunction(obj,start,end){
   if(document.selection){
    if(obj.tagName=='TEXTAREA'){
     var i=obj.value.indexOf("\r",0);
     while(i!=-1&&i<end){
      end--;
      if(i<start){
       start--;
      }
      i=obj.value.indexOf("\r",i+1);
     }
    }
    var range=obj.createTextRange();
    range.collapse(true);
    range.moveStart('character',start);
    if(end!=undefined){
     range.moveEnd('character',end-start);
    }
    range.select();
   }else{
    obj.selectionStart=start;
    var sel_end=end==undefined?start:end;
    obj.selectionEnd=Math.min(sel_end,obj.value.length);
    obj.focus();
   }
}


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);
}

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();
}
}

你可能感兴趣的:(IE,firefox)