关于jsp页面根据方向键上下左右移动光标(用js实现)

zhangwenmin 2009-03-06 10:18:38
假如一个form表单里有很多text框,在键盘上按上下左右来移动text框中的光标
...全文
621 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd5816690 2009-03-06
  • 打赏
  • 举报
回复
给各个text设置坐标 location="x,y"

<form name="form1">
<input location="1,1"><input location="1,2"><input location="1,3">
<br/>
<input location="2,1"><input location="2,2"><input location="2,3">
<br/>
<input location="3,1"><input location="3,2">
</form>
<script>
var texts = new Array();
var x = 0;
var y = 0;
var maxx = 0;
var maxy = 0;
window.onload=function(){
var theform = document.getElementsByName("form1")[0];
var inputs = theform.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++){
if(inputs[i].type == "text"){
texts.push(inputs[i]);
}
}

for(var i = 0; i < texts.length; i++){
texts[i].onfocus = new Function("setCurrent('" + texts[i].getAttribute("location") + "')");
var crtx = parseInt(texts[i].getAttribute("location").split(",")[0]);
var crty = parseInt(texts[i].getAttribute("location").split(",")[1]);
maxx = maxx < crtx ? crtx : maxx;
maxy = maxy < crty ? crty : maxy;
texts[i].onkeydown = function(e){
e = e || window.event;
switch(e.keyCode){
case 38:movePosition(--x,y,38);break;// 上
case 40:movePosition(++x,y,40);break;// 下
case 37:movePosition(x,--y,37);break;// 左
case 39:movePosition(x,++y,39);break;// 右
default:return true;
}
}
}
}

function movePosition(x1,y1,keyCode){
x1 = x1 > maxx ? 1 : x1;
y1 = y1 > maxy ? 1 : y1;
x1 = x1 < 1 ? maxx : x1;
y1 = y1 < 1 ? maxy : y1;
var j = 0;
for(; j < texts.length; j++){
if(texts[j].getAttribute("location") == x1 + "," + y1){
texts[j].focus();
break;
}
}

if(j == texts.length){
switch(keyCode){
case 38:movePosition(--x1,y1,keyCode);break;// 上
case 40:movePosition(++x1,y1,keyCode);break;// 下
case 37:movePosition(x1,--y1,keyCode);break;// 左
case 39:movePosition(x1,++y1,keyCode);break;// 右
}
}
}

function setCurrent(location){
x = location.split(",")[0];
y = location.split(",")[1];
}
</script>
zhangwenmin 2009-03-06
  • 打赏
  • 举报
回复
你那参数传的是什么参数?
ml1812650 2009-03-06
  • 打赏
  • 举报
回复
function changeFocus(ele, n)
{
var index = ele.sourceIndex+n;
var o = null;
while(index < document.all.length && index >= 0)
{
o = document.all[index];
if(o.tagName == "A" || o.tagName == "FORM" || o.tagName == "DIV")
{
break;
}
else
{
index += n;
}
}
if(index < document.all.length && index >= 0)
{
o.focus();
}
}

document.onkeydown = function ()
{
var e = event.srcElement;
if(event.keyCode == 38)
{
changeFocus(e, -1);
return false;
}
else if(event.keyCode == 40)
{
changeFocus(e, 1);
return false;
}
}
zhangwenmin 2009-03-06
  • 打赏
  • 举报
回复
看看天下有没有只写一个模板就能全部实现上面的功能,对所有text框都适用
zhangwenmin 2009-03-06
  • 打赏
  • 举报
回复
有知道的么?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧