JS实现键盘移动光标
通过键盘的上下左右,实现对光标的移动,当点击回车时,进入所选的对应页面。左边是菜单栏,右边是具体数据。
左边的菜单栏布局
右边的具体数据局部
1、先查找到菜单栏所以元素
function dh_method(){
alert("菜单栏加载");
var my_dz=0;//右移动时改变值,从而将左边的光标取消,右边的光标设置(my_dz=1时)
var baseIndex = 10;//初始值
$("#div_dh").find("li").each(function(li) {
$(this).find("a")
.attr("tabindex", li * 10 + baseIndex).attr("my_li",li )
.addClass("cGridInputs");
//alert("当前位置:"+li+"列");
});//li==结束位置
if(my_dz==0){
$(".cGridInputs[tabindex=" + 10 + "]").focus() ;
}
2、菜单栏的键盘控制
var tabIndex = parseInt($(this).attr("tabindex"));
var my_lis = parseInt($(this).attr("my_li"));
switch (evt.which) {
case 40: //下---------------------
if( my_lis==9){//最后一个
return;
}
my_lis++;
tabIndex = my_lis*10+ baseIndex;
break;
case 38: //上---------------------
if( my_lis==0){//第一个
return;
}
my_lis--;
tabIndex = my_lis*10+ baseIndex;
break;
case 39: //右---------------------
// $(".cGridInput[tabindex=" + 10 + "]").blur();
my_dz=1;
break;
case 13:
/* alert("确定进入所选菜单--坐标:"+my_lis);
var url= $("ul li:eq("+my_lis+")").find("a").attr("href");
alert("菜单链接: "+url);
window.location.href=url;*/
break;
};
if(my_dz==0){
$(".cGridInputs[tabindex=" + tabIndex + "]").focus() ;
var distance = my_lis*(40+0)+50+'px';
$('.lanrenzhijia .hover').stop().animate({top:distance},150);
}
if(my_dz==1){
$(".cGridInputs[tabindex=" + tabIndex + "]").blur();
zt_method(); // 当点击右时,从左边将移动到右边,调用右边移动的函数
return;
}
});
};
3、右边页面的查找与控制
alert("主体加载");
var baseIndex = 10;//初始值
var my_list;
var my_li;
var arrays = [];
var my_dz=0;
var rows=$("#list ").size();//总行数
$("#list ").each(function(list) {
arrays.push({"list":list,"li": $(this).find("li").size()});
// alert("list-第: "+list+"行;"+"li-总:"+$(this).find("li").size()+"张");
$(this).find("li").each(function(li) {
$(this).find("img")
.attr("tabindex", list * 10 + li + baseIndex).attr("my_list", list ).attr("my_li",li )
.addClass("cGridInput");
// alert("当前位置:"+list+"行"+li+"列");
});//li==结束位置
});//子div==结束位置
if(my_dz==0){
$(".cGridInput[tabindex=" + 10 + "]").focus();
$(".div_right #list:eq(0) li:eq(0)").addClass("mybg");
localStorage.clear();
}
$("#list .cGridInput").keydown( function(evt) {
var tabIndex = parseInt($(this).attr("tabindex"));
var my_lists = parseInt($(this).attr("my_list"));
var my_lis = parseInt($(this).attr("my_li"));
var column = 0;//列总数
switch (evt.which) {
case 38: //上---------------------
if ( my_lists == 0){
return;
}
my_lists -= 1;
$.each(arrays,function(index,value) {
if(my_lists == value.list){
column = value.li;
return;
}
});
if (my_lis > column-1) {
my_lis = column-1;
}
tabIndex = my_lists * 10 +my_lis + baseIndex;
break;
case 40: //下---------------------
if (my_lists == rows-1) { //已经是最后一行
return;
}
my_lists += 1;
$.each(arrays,function(index,value) {
if(my_lists == value.list){
column = value.li;
return;
}
});
if (my_lis > column-1) {
my_lis = column-1;
}
tabIndex = my_lists * 10 +my_lis + baseIndex;
break;
case 37: //左移---------------------
if (my_lists == 0 && my_lis == 0) { //第一行第一个,跳转到菜单------------------------
//跳到菜单---------------
my_dz=1;
//return;
}
if(my_lis == 0){
my_lists--;
$.each(arrays,function(index,value) {
if(my_lists == value.list){
column = value.li;
return;
}
});
my_lis=column-1;
tabIndex=tabIndex-10+my_lis;
}else{
tabIndex--;
my_lis--;
}
break;
case 39: //右---------------------
$.each(arrays,function(index,value) {
if(my_lists == value.list){
column = value.li;
return;
}
});
if (my_lists == rows-1 && my_lis == column-1) { //最后行最后一个,跳转到第一个
my_lists =0 ;
my_lis= 0;
break;
}
if(my_lis == column-1){
my_lists++;
my_lis=0;
tabIndex=tabIndex+10-(column-1);
}
else{
tabIndex++;
my_lis++;
}
break;
case 13:
alert("确定进入观看--坐标:"+my_lists+" , "+my_lis);
var url= $("#div_index #list:eq("+my_lists+") li:eq("+my_lis+")").find("a").attr("href");
alert("电影超链接: "+url);
window.location.href=url;
break;
};
//改变选择的颜色--------------------------------
if(my_dz==0){
alert(my_lists+"行,列"+my_lis+"=="+tabIndex+"光标");
$(".div_right #list li").removeClass("mybg");
$(".div_right #list:eq("+my_lists+") li:eq("+my_lis+")").addClass("mybg");
$(".cGridInput[tabindex=" + tabIndex + "]").focus();
}
if(my_dz==1){
$(".cGridInput[tabindex=" + tabIndex + "]").blur();
$(".div_right #list li").removeClass("mybg");
dh_method();
return;
}
});//按键==结束位置
};
4、实现效果图
JS实现键盘移动光标相关推荐
- selenium java 滚动条_java+selenium使用JS、键盘滑动滚动条
本篇文章介绍如何使用JS和键盘对象对页面进行滑动滚动条-------------主要针对java做自动化测试的同学 一:使用键盘对象操作滚动条 //导包 importorg.openqa.seleni ...
- php接收键盘事件,js获取键盘事件的方法实例
本文主要和大家分享js获取键盘事件的方法实例,希望能帮助到大家. document.οnkeydοwn=function(event){ var e = event || window.event | ...
- js检测键盘组合键,禁止F12
js检测键盘组合键ctrl+p js检测键盘组合键ctrl+d js检测键盘组合键ctrl+s js禁止F12 体验地址:点击在线体验 <!DOCTYPE html> <html l ...
- js通过键盘操控盒子
js通过键盘操控盒子 步骤 1.键盘按下方向键,可以控制小盒子的移动. 1.1 给谁添加键盘按下事件 document 1.2 如何判断按下的是哪个键键盘事件对象 1.3 如何让小盒子移动 让小盒子绝 ...
- js实现键盘控制div移动(可加速)_☆往事随風☆的博客
文章目录 前言 一.基本思路 二.代码分析 1.首先为div开启绝对定位 2.为document绑定键盘按下和抬起事件 3.获取对应键盘的Unicode编码 4.设置变量保存速度和键盘Unicode编 ...
- vue实现自定义身份证,数字键盘(光标,输入框,键盘)
vue实现自定义身份证,数字键盘(光标,输入框,键盘) 组件介绍 组件代码 效果图 组件使用 引用 使用 参数介绍 方法 插槽 组件介绍 vue实现自定义身份证键盘(光标,输入框,键盘全手写) 组件代 ...
- html打字并自动滚动效果,js实现键盘自动打字效果
content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale= ...
- JS之键盘事件案例(重要)
事件对象案例 下拉菜单 HTNL CSS JS 拖拽回放 html css js 移动表格 html css js 换肤效果 html css js 下拉菜单 需求: [1]搜索框获取焦点的时候 显示 ...
- js模拟键盘某个键按下_教你认识电脑键盘上的按键基础篇,轻松认识键盘
常用的键盘,无论是台式机还是笔记本,除了材质.品牌等差异,基本用法是一样的,今天就带大家认识键盘 1.键盘区域划分,主要有主键盘区.功能区.光标控制区.小键盘区和指示灯区,日常使用最多的是主键盘区,方 ...
最新文章
- js插值计算_Python IDW插值计算及可视化绘制
- (转)【javascript基础】原型与原型链
- 如何查找订单提示VPRS VE217 数量/值确定时出错
- CVPR 2018 TRACA:《Context-aware Deep Feature Compression for High-speed Visual Tracking》论文笔记
- SEO优化---学会建立高转化率的网站关键词库
- WAP自助建站 我编程之路的启蒙
- android 存储私有文件,是否可以只在Android应用程序的私有目录中保存图像,而不是设备的内部或任何外部存储?...
- PyTorch 1.0 中文官方教程:数据加载和处理教程
- Anconda之常用命令汇总
- matlab里的scalar,scalar_scalar与vector之间的区别
- 关于代码审查的几点建议
- Geoserver+postSQL+openlayer实现路径规划
- mysql世界国家省市地区的信息中英文
- 转化Foggy_Cityscapes数据集为voc和yolo格式用作目标检测
- KafKa 启动异常 : ERROR Failed to clean up log for __consumer_offsets-30 in dir 另一个程序正在使用此文件,进程无法访问
- 深入理解Java类加载器(2):线程上下文类加载器
- springboot2.0启动报错The APR based Apache Tomcat Native library which allows optimal performance in ...
- 如何高效的完成每日的任务?
- JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何 设计。
- 网易免费企业邮箱Foxmail设置方法
热门文章
- Win10各版本区别
- 漫漫软考路-考后总结
- Java jdt 编辑_java – 如何使用JDT以编程方式重命名方法
- php编程模块英文缩写_工作中常用的英文单词缩写
- linux服务器 ip地址,查看linux服务器的IP地址
- Java异常 | JedisException: Could not get a resource from the pool
- 树莓派教程——树莓派连接并打开摄像头
- 扭蛋机html源码,微信小程序wxss制作扭蛋机
- 目光远大,不要被小许诺所牵绊,唯有自我提升是真理
- 全网功能最全的无水印短视频提取工具