解决按左右箭头光标移动实现shift+tab、tab功能

/*
 * 此脚本专门处理按键光标移动处理
 * 结合jQuery的jquery.hotkeys.min.js一起使用
 * 解决在文本有内容的情况下光标可以在文字上移动,到达文本末尾是往后跳格,到达文本首位是往前跳格
 * $(".clsinput12").not(".css_readonly,:hidden")获取的是可输入的一些文本框的元素数组,包括 input,select,textarea

 *
 */
 
//IE中屏蔽后退建(Back Space)
document.onkeydown = function() //用户的按键事件
{    
    if(event.keyCode == 8)      //如果按下的是退格键
    {
        if(event.srcElement.tagName.toLowerCase() != "input"
           && event.srcElement.tagName.toLowerCase() != "textarea") //如果是在textarea内
            event.returnValue = false;                              //不执行任何操作
    }
}
//屏蔽掉IE自带的功能键
document.onkeydown=noway;           //绑定窗体加载事件
function  noway(){ 
    if(event.keyCode==116){         //通过键值判断是否是F5
        event.keyCode=0; 
        event.returnValue=false;    //不进行任何操作
    } 
}

//js获得光标所在的文本框(text/textarea)中的位置
function getPosition(obj){
 var result = 0;
 if(obj.selectionStart){ //IE以外
  result = obj.selectionStart
 }else{ //IE
  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;
 }
 return result;
}


//计算字符串长度
String.prototype.codeLength=function(){
  var len=0;
  if(this==null||this.length==0)
   return 0;
  var str=this.replace(/(^\s*)|(\s*$)/g,"");//去掉空格
  for(i=0;i<str.length;i++)
         len++;
    return len;
}

//热键处理
 //屏蔽Backspace键

 $(document).bind('keydown', 'backspace',function (evt){
     if(evt.srcElement.tagName.toLowerCase()=="body"){
      return false;
     }
    });


  //向右箭头按键
 $(document).bind('keydown', 'right',function (evt){
  var currentElement=evt.target;//当前元素
  var curId=currentElement.id;//获取元素id
  var index=$(".clsinput12").not(".css_readonly,:hidden").index($("#"+curId)[0])+1;//获取后一个元素的index,此写法可参照jquery文档的index(object)


  var elmlen=$(".clsinput12").not(".css_readonly,:hidden").length;//去掉只读和隐藏的元素,获取页面上的元素个数
  
  if(index<elmlen){
   if(evt.srcElement.tagName.toLowerCase()=="input"){
    var len=evt.target.value.codeLength();
    var pos=getPosition(evt.target);
    if(pos==len){
     $(".clsinput12").not(".css_readonly,:hidden")[index].focus();
    }
   }else {
     $(".clsinput12").not(".css_readonly,:hidden")[index].focus();
     
   }
  }
  
 });


 //向左箭头按键
 $(document).bind('keydown', 'left',function (evt){
  var currentElement=evt.target;
  var curId=currentElement.id;
  var index=$(".clsinput12").not(".css_readonly,:hidden").index($("#"+curId)[0])-1;//获取前一个元素的index


  if(index>-1){
   if(evt.srcElement.tagName.toLowerCase()=="input"){
    var pos=getPosition(evt.target);
    if(pos==0){
     //debugger;
     $(".clsinput12").not(".css_readonly,:hidden")[index].focus();
    }
   }else {   //if(evt.srcElement.tagName.toLowerCase()=="select") readonly="readonly"
      $(".clsinput12").not(".css_readonly,:hidden")[index].focus();
   }
  }
  
 });

你可能感兴趣的:(jquery,css,prototype,IE,脚本)