`
lijingbo9512
  • 浏览: 2424 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

解决按左右箭头光标移动实现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();
   }
  }
  
 });

分享到:
评论

相关推荐

    Sublime Text

    Ctrl+M 光标移动至括号内开始或结束的位置 Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号) Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果) Ctrl+Shift+/ 注释已选择内容 Ctrl+Z 撤销 Ctrl+Y 恢复...

    键盘按键命令

    在选项卡上向后移动 ctrl+ shift+ tab 在选项上向前移动 tab 在选项卡上向前移动 ctrl+ tab 如果在“另存为”或“打开” 对话框中选择了某文件夹, 要打开上一级文件夹 backspace 在“另存为”或“打开...

    计算机基础快捷键.docx

    Ctrl+F1 功能区显示隐藏 Ctrl+F6 打开文档间切换 Ctrl+F9 插入 Ctrl+F10 文档窗口放大与缩小 Ctrl+F12 打开文档库 Home 光标移动到行首 End 光标移动到行尾 Shift+Home 选定光标前一段内容 Shift+End 选定光标后一段...

    sublime_text_3安装包+汉化包+注册机

    Ctrl+M 光标移动至括号内开始或结束的位置 Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果) Ctrl+Shift+c转换为utf8 Ctrl+R 搜索指定文件的函数标签 Ctrl+G 跳转到指定行 Ctrl+KT 折叠属性 Ctrl+K0 展开...

    优秀代码编辑器 Sublime Text 3.2.2 Build 3211 + x64 中文注册版.zip

    Ctrl+M 光标移动至括号内开始或结束的位置 Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果) Ctrl+Shift+c转换为utf8 Ctrl+R 搜索指定文件的函数标签 Ctrl+G 跳转到指定行 Ctrl+KT 折叠属性 Ctrl+K0 展开...

    Delphi2010资源,delphi2010快捷键

    在属性窗口按TAB键将光标移动到属性名区,键入属性名的开头字母可快速定位到该属性 F4 运行到光标处 F5 设置断点 F7 步进式调试同时追踪进入子过程 F8 步进式调试不进入子过程 F9 运行 CTRL+F9 编译 CTRL+B ...

    vs快捷键图片

    移动到编辑器中的前一个文档CTRL+SHIFT+TAB 窗口.上一窗格SHIFT+ALT+F6 窗口.上一个拆分窗格SHIFT+F6 窗口.上一选项卡CTRL+PAGEUP 视图.文档大纲CTRL+ALT+T 视图.对象浏览器CTRL+ALT+B 显示“对象浏览器”F2 视图....

    uninstall是安卓开发的一部分代码

    返回光标最后编辑位置 Last Edit Location command + shift + delete control + shift + Backspace 调到代码块首部/尾部 Move Caret To Code Block Option + Command + [ 或者 ] Control+[ 或者 ] 重命名 Rename ...

    Sublime Text Build 3211 x64 Setup.zip

     Ctrl+M 光标移动至括号内开始或结束的位置  Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果)  Ctrl+Shift+c转换为utf8  Ctrl+R 搜索指定文件的函数标签  Ctrl+G 跳转到指定行  Ctrl+...

    delphi快捷键

    55.Tab 在object inspector窗口按tab键将光标移动到属性名区,然后键入属性名的开头字母可快速定位到该属性 56.Ctrl+Alt 按着Ctrl+Alt之后,可用鼠标选择一个矩形块中的代码,并可比它进行复制,粘贴 57.Shift+↓、...

    Protel DXP 快捷键

    Shift+ ↑↓← → 在箭头方向以十个栅格为增量移动光标 ↑↓← → 在箭头方向以一个栅格为增量移动光标 Space 放弃屏幕刷新 Esc 退出当前操作 End 刷新屏幕 Home 以光标为中心刷新屏幕 PageDown or Ctrl+ mouse ...

    智能会议管理系统

    代码标签输入完成后,按Tab,生成代码。 选中文本,按Ctrl+Shift+F7 ,高亮显示所有该文本,按Esc高亮消失。 Ctrl+W 选中代码,连续按会有其他效果 选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示。 ...

    xp系统快捷键大全下载

     在选项卡上向后移动 CTRL+ SHIFT+ TAB  在选项上向前移动 TAB  在选项卡上向前移动 CTRL+ TAB  如果在“另存为”或“打开”  对话框中选择了某文件夹,  要打开上一级文件夹 BACKSPACE  在“另存为”或...

    eclipse初学者常用快捷键

    选中数行,整体往前移动:shift + tab * 25.在当前类中,显示类结构,并支持搜索指定的方法、属性等:ctrl + o * 26.批量修改指定的变量名、方法名、类名等:alt + shift + r * 27.选中的结构的大小写的切换:...

    IDEA快捷键.docx

    代码标签输入完成后,按Tab,生成代码。 选中文本,按Ctrl+Shift+F7 ,高亮显示所有该文本,按Esc高亮消失。 Ctrl+W 选中代码,连续按会有其他效果 选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示...

    计算机快捷键大全.doc

    Ctrl+Shift 输入法切换 Ctrl+空格 中英文切换 Ctrl+回车 QQ号中发送信息 Ctrl+Home 光标快速移到文件头 Ctrl+End 光标快速移到文件尾 Ctrl+Esc 显示开始菜单 Ctrl+Shift+快速缩小文字 Ctrl+Shift+&gt; 快速放大文字 ...

    Sublime Text2.1 可添加windows8

    Ctrl+M 光标移动至括号内开始或结束的位置 Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号) Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果) Ctrl+Shift+/ 注释已选择内容 Ctrl+Z 撤销 Ctrl+Y 恢复...

    python常用快捷键

    #最重要的快捷键 1. ctrl+shift+A:万能命令行 2. shift两次:查看资源文件 #新建工程第一步操作 1.... 2....File Encodings--&gt;... 1....#光标操作 ... shift+tab:反向退格 11. alt+shift+上下键:选中代码移

    Sublime Text3_64.rar

    Ctrl+M 光标移动至括号内开始或结束的位置 Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号) Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果) Ctrl+Shift+/ 注释已选择内容 Ctrl+Z 撤销 Ctrl+Y...

    电脑键盘操作知识

    Ctrl+Shift 输入法切换 Ctrl+空格 中英文切换 Ctrl+回车 QQ号中发送信息 Ctrl+Home 光标快速移到文件头 Ctrl+End 光标快速移到文件尾 Ctrl+Esc 显示开始菜单 Ctrl+Shift+快速缩小文字 Ctrl+Shift+&gt; 快速放大...

Global site tag (gtag.js) - Google Analytics