Javascript 中键盘方向键控制光标在表单中切换之不规则列表
2017-06-06 10:38
671 查看
通过坐标定位input元素:虽然麻烦,但更加通用,实用性很强,只要坐标标记正确,就完全没问题。主要针对的对象是列数不规则的列表,当然列数规则的列表更不在话下。至于兼容性,使用者可以适当修改一下代码。
注意:如果列表的列数是规则的,建议采用我的另一篇博客文章》》键盘方向键控制光标在表单中切换之规则列表。
注意:如果列表的列数是规则的,建议采用我的另一篇博客文章》》键盘方向键控制光标在表单中切换之规则列表。
<table border='1'> <tr> <td><input type="text" id="0_0" value="测试d用" /></td> <td><input type="text" id="1_0" value="测d试用" /></td> <td><input type="text" id="2_0" value="测asf试用" /></td> </tr> <tr> <td><input type="text" id="0_1" value="测试q用" /></td> <td><input type="text" id="1_1" value="测试q用" /></td> <td><input type="text" id="2_1" value="测as试用" /></td> </tr> <tr> <td><input type="text" id="0_2" value="测用" /></td> <td><input type="text" id="1_2" value="测试用"/></td> <td><input type="text" id="2_2" value="测试用" /></td> </tr> </table> js代码: var inp = $(":text").not($("input[readonly]")); inp.keydown(function(event){ event = event || window.event; var iekey = event.keyCode; //获取你键盘按下的的什么键(得到数字) var xy = $(this).attr("id").split("_"); var x = parseInt(xy[0]); var y = parseInt(xy[1]); //上下切换 if (iekey == 38 || iekey == 40) { y = y + (iekey - 39); //获取移动到的位置 var id = x+"_"+y; //如果位置存在 if ($("#"+id).length>0) { setTimeout(function(){$("#"+id).select();},10); }else{ //如果不存在则:切换到下一行或上一行 id = 0+"_"+y; setTimeout(function(){$("#"+id).select();},10); } } //左右切换 if (iekey == 37 || iekey == 39) { x = x + (iekey - 38); //获取移动到的位置 var id = x+"_"+y; var gh = $("#"+id); //获取当前光标在表单的位置 if (document.selection) { var sel = document.selection.createRange(); sel.setEndPoint("StartToStart", this.createTextRange()) var s = sel.text.length //获取光标在表单的位置 }else{ var s = this.selectionStart; //获取光标在表单的位置 } //如果位置存在:向右移动 if ($("#"+id).length>0 && s == this.value.length && iekey == 39) { setTimeout(function(){$("#"+id).select();},10); //setCaretPosition(gh[0],gh[0].value.length); //如果位置存在:向左移动 }else if($("#"+id).length>0 && s == 0 && iekey == 37){ setTimeout(function(){$("#"+id).select();},10); //setCaretPosition(gh[0],0); //如果不存在则:切换到上一行 }else if($("#"+id).length == 0 && s == 0 && iekey == 37){ id = 0+"_"+(y+(iekey-38)); setTimeout(function(){$("#"+id).select();},10); //如果不存在则:切换到下一行 }else if($("#"+id).length == 0 && s == this.value.length && iekey == 39){ id = 0+"_"+(y+(iekey-38)); setTimeout(function(){$("#"+id).select();},10); } } }); //控制光标的初始化位置 function setCaretPosition(obj, pos){ if(obj.setSelectionRange){ obj.setSelectionRange(pos,pos); }else if(obj.createTextRange) { var range = obj.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } }
相关文章推荐
- Javascript 中键盘方向键控制光标在表单中切换之规则列表
- javascript使用方向键控制光标在table单元格中切换
- 用键盘方向键控制页面切换的 jQuery 插件
- jquery 方向键控制光标在不规则分布的input 中移动
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- javascript实现的使用方向键控制光标在table单元格中切换
- javascript实现的使用方向键控制光标在table单元格中切换
- [置顶] javascript入门基础小案例-----按键盘的方向键来控制块的移动z注释:
- 键盘上下键控制下拉列表上下切换
- javascript实现ecshop搜索框键盘上下键切换控制
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- javascript的键盘控制事件说明
- javascript键盘事件全面控制脚本代码
- javascript键盘事件表单交互
- 用javascript控制光标位置
- javascript键盘事件全面控制脚本代码
- 用键盘控制光标在输入框中跳转的小巧门
- javascript方向键(上下键)控制表格行选中并高亮显示
- javascript的键盘控制事件
- 用键盘控制光标在输入框中跳转的小巧门 (轉自http://blog.csdn.net/dhlhh)