js 上下左右键控制焦点

 这篇文章主要是对js上下左右键控制焦点的示例代码进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

如下所示:
代码如下:
//begin---------------上下左右键控制
 
if('${iscontrol_mchntid}'.indexOf('${mchntid}')!=-1){
 
var texts = new Array();
//设置为focus所在的location
var x = 2;
var y = 3;
var maxx = 0;
var maxy = 0;
window.onload=function(){
var inputs = $("[location]");
for(var i = 0; i < inputs.length; i++){
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:setPosition(x,y,38);break;// 上
case 40:setPosition(x,y,40);break;// 下
case 37:setPosition(x,y,37);break;// 左
case 39:setPosition(x,y,39);break;// 右
case 45:setPosition(x,y,45);break; // Insert键/返回键 在输入框里是删除且输入库有值时是删除 其他为返回上一页
default:return true;
}
}; 
}
};
function setPosition(x,y,keyCode){
 
//此处加入动态改变位置的逻辑----begin 
//上下时,只改动y坐标,x坐标自动改变
//左右时,只改动x坐标,y坐标自动改变
if(keyCode == '38' && x == '3'){
if(y=='3'||y=='4'||y=='5'||y=='6'||y=='7'||y=='8'){
y='3';
}
}
if(keyCode == '40' && x == '4'){
if(y=='3'||y=='4'||y=='5'||y=='6'||y=='7'||y=='8'){
y='3';
}
}
//此处加入动态改变位置的逻辑----end
 
if(keyCode == '38'){
x = --x; 
}
if(keyCode == '40'){
x = ++x; 
}
if(keyCode == '37'){
y = --y; 
}
if(keyCode == '39'){
y = ++y; 
}
movePosition(x,y,keyCode);
}
function movePosition(x1,y1,keyCode){
if(keyCode == '45'){
//光标所在的对象是input时
var st = x1+","+y1;
if($("input[location='"+st+"']").attr("type")=="text"){
var oldval = $("input[location='"+st+"']").val();
var newval = oldval.substring(0,oldval.length-1);
$("input[location='"+st+"']").val(newval);
return false;
}else{
history.go(-1); 
return false;
}
}
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];
}
}
//end---------------上下左右键控制
 
 

时间: 2024-08-03 14:08:10

js 上下左右键控制焦点的相关文章

js 上下左右键控制焦点(示例代码)_javascript技巧

如下所示: 复制代码 代码如下: //begin---------------上下左右键控制 if('${iscontrol_mchntid}'.indexOf('${mchntid}')!=-1){ var texts = new Array();//设置为focus所在的locationvar x = 2;var y = 3;var maxx = 0;var maxy = 0;window.onload=function(){var inputs = $("[location]")

用Enter键控制焦点切换的方法

在Windows环境下,要使一个控件取得焦点,可在该控件上用鼠标单击一下,或按Tab键将焦点移至该控件上.这种控制焦点切换的方法有时不符合用户的习惯.用户希望用Enter键,控制焦点由Edit1切换到Edit2.要实现这样的功能需借助WinAPI函数SendMessage来完成.方法是:先设Form1的KeyPreview属性为true,然后在Form1的OnKeyPress事件中加入如下的代码.这样,用户就可以通过按Enter,键控制焦点按定义好的Taborder顺序来移动了! void __

在winform中捕获上下左右键等控制键的按键事件

最近一直在做表单设计器,今天有一个需求就是:通过上下左右键来控制表单上的控件移动.但是控件的KeyDown捕获不到上下左右键,KeyUp事件倒是可以捕获到,但你通过上下左右键移动控件位置,不能点一下才移动一下啊,太不人性了.上网找了半天发现了这么一个方法: 重写Control的ProcessDialogKey方法,此处以winform表单为例: protected override bool ProcessDialogKey(Keys keyData) { Control control = t

js实现键盘上下左右键选择文字并显示在文本框的方法

  本文实例讲述了js实现键盘上下左右键选择文字并显示在文本框的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

js键盘上下左右键怎么触发function

 这篇文章主要是对js键盘上下左右键怎么触发function 进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 代码如下: <script type="text/javascript">  function jumpPage() {      if (event.keyCode==37)//左  fun_a();  if (event.keyCode==38)//上  fun_b();  if (event.keyCode==39)//右  fun_c()

Qt之Tab键切换焦点顺序

简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换.执行按钮焦点的切换等. 简介 效果 实现方式 源码 效果 实现方式 接口说明: static void QWidget::setTabOrder(QWidget * first, QWidget * secon

jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果

jquery图片特效制作仿腾讯QQ商城首页banner焦点图片轮播切换效果,带索引按钮控制和左右按钮控制图片切换,实例代码如下,感兴趣的朋友可以参考下哈   复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery图片

通过上下左右键和回车键切换光标实现代码_jquery

做项目时,客户提出这样一个要求,在列表中的文本框里输入数据时,要能够通过上下左右键来切换光标,按回车键就把光标移到下一个文本框.这样就省得一直去用鼠标了,操作起来更方便. 不废话,上代码. 复制代码 代码如下: <asp:GridView id="gdv" runat="server" AllowPaging="True" PageSize="50" AutoGenerateColumns="False&quo

文本框-c# winform中如何控制焦点。新人求教。

问题描述 c# winform中如何控制焦点.新人求教. 如何实现光标在文本框的,数据库的表格在按上下键时可以移动.就是下面这种情况. 解决方案 private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Down) { this.dataGridView1.Rows[this.dataGridView1.CurrentRow.Index + 1 > this.dataGridView1