Javascript 中键盘方向键控制光标在表单中切换之不规则列表
来源:互联网 发布:阿里云oss和七牛 编辑:程序博客网 时间:2024/06/07 03:17
通过坐标定位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(); } }
阅读全文
0 1
- Javascript 中键盘方向键控制光标在表单中切换之不规则列表
- Javascript 中键盘方向键控制光标在表单中切换之规则列表
- 方向键控制光标在table中跳动
- 表单中按上下方向键自动移动光标的例子
- JavaScript中怎么样在表格控制光标的移动
- 用键盘控制光标在输入框中跳转的小巧门
- 用键盘控制光标在输入框中跳转的小巧门
- LayaAir 使用方向键 控制精灵在格子中移动
- 用键盘控制光标在输入框中跳转的小巧门 (轉自http://blog.csdn.net/dhlhh)
- 在Firefox中使用键盘(F7插入式浏览,可用键盘选中要复制的文字,通过tab切换光标的位置)
- QT项目之键盘控制光标移动
- GUI 剖析之 键盘方向键控制鼠标移动的实现
- 在FreeForm DW中用方向键控制上下左右切换列
- 使用方向键控制table中文本框焦点
- 键盘上的INS键---切换文档编写中光标的状态
- c++ 在console中控制光标的位置
- Flex 使用方向键控制光标位置
- vi中光标的控制
- Java代码优化六大原则
- 接口测试HTML报告模板(第一版 纯字符串拼接)
- ble属性数据库
- Android应用瘦身,从18MB到12.5MB
- ServletContext作用功能详解
- Javascript 中键盘方向键控制光标在表单中切换之不规则列表
- Kotlin基础教程-泛型
- [Unity&RPG]实现简单的鼠标点击移动 角色
- mysql sql语句大全
- jquery ajax防重复提交
- kafka个人总结(1)
- Ubuntu QT C连接mysql数据库
- [YTU]_2499( 处理成绩(c++类训练))
- RXJAVA学习资料整理