首页 > 其他分享 >报表中按下上下左右按键input会像excel一样跳转聚焦

报表中按下上下左右按键input会像excel一样跳转聚焦

时间:2024-09-24 09:35:31浏览次数:8  
标签:rowIndex refKey excel nextRow nextColumn 跳转 input maxArr event

上下左右按键input聚焦
###  html 使用 在需要聚焦的input后加下面内容
    @keydown.native="handleKeyDown($event, 0, 0)" :ref="'0_0'"
    或者
    @keydown.native="handleKeyDown($event, index, 0)" :ref="`${index}_0`"
### 引入此方法
    handleKeyDown (event, rowIndex, colIndex) {
        const maxArr = [5, 5]; // 每一行最多有多少可聚焦输入框(从0开始)
        const refKey = handleKeyDown(event, rowIndex, colIndex, maxArr);
        if (this.$refs[refKey]) {
            this.$refs[refKey].focus();
        }
    }
#### 数组遍历情况使用
    if (this.$refs[refKey][0]) {
        this.$refs[refKey][0].focus();
    }
#### 左侧为rowspan时需拆分字符串
    // 通过_拆分字符串
    const arr = refKey.split("_");
    if (arr[0] >= 6) {
        if ((arr[0] > 6) && arr[1] == 0) {
          this.handleKeyDown(event, arr[0], arr[1]);
          return;
        };
        if (this.$refs[refKey][0]) {
          this.$refs[refKey][0].focus();
        }
    } else if (this.$refs[refKey]) {
        this.$refs[refKey].focus();
    }

utils

// 监听上下左右
export function handleKeyDown(event, rowIndex, colIndex, maxArr) {
  const keyCode = event.keyCode;
  // 阻止方向键左右的默认行为
  if ([37, , 38, 39, 40].includes(event.keyCode)) {
    event.preventDefault();
  }
  let nextRow = rowIndex;
  let nextColumn = colIndex;
  const maxRow = maxArr.length;
  const maxCol = maxArr[rowIndex];
  switch (keyCode) {
    case 37: // left
      if (colIndex > 0) nextColumn--;
      // 当col为0 row大于0时,取row-1,col最大值
      if (colIndex == 0 && rowIndex > 0) {
        nextRow--;
        nextColumn = maxArr[nextRow];
      }
      break;
    case 39: // right
      if (colIndex < maxCol) nextColumn++;
      // 当col等于最大值,row小于最大行时,取row+1,col为0
      if (colIndex == maxCol && rowIndex < maxRow) {
        nextRow++;
        nextColumn = 0;
      }
      break;
    case 38: // up
      if (rowIndex > 0) nextRow--;
      // 当前col大于将要聚焦的那一行的col最大值时,取新行最大值
      if (nextColumn > maxArr[nextRow]) {
        nextColumn = maxArr[nextRow];
      }
      break;
    case 40: // down
      if (rowIndex < maxRow) nextRow++;
      // 当前col大于将要聚焦的那一行的col最大值时,取新行最大值
      if (nextColumn > maxArr[nextRow]) {
        nextColumn = maxArr[nextRow];
      }
      break;
  }
  return `${nextRow}_${nextColumn}`;
}

 

标签:rowIndex,refKey,excel,nextRow,nextColumn,跳转,input,maxArr,event
From: https://www.cnblogs.com/wjian0916/p/18428399

相关文章

  • 《生化危机4重制版》黑屏进游戏慢,dinput8.dll缺失如何解决?
    针对《生化危机4重制版》中出现的黑屏、进游戏慢以及dinput8.dll文件缺失的问题,可以采取以下步骤进行解决:一、解决dinput8.dll缺失问题dinput8.dll是DirectX组件之一,用于处理输入设备如键盘、鼠标等。如果这个文件丢失或损坏,游戏可能无法正常启动。以下是几种解决方法:重新......
  • 《冰汽时代2》有声音没有画面,提示dinput8.dll缺失的操作方法
    《冰汽时代2》进不去游戏,有声音没有画面,并提示dinput8.dll缺失的问题,可以通过以下几种操作方法来解决:一、重新安装游戏由于dinput8.dll文件通常与游戏相关,特别是那些需要处理游戏手柄功能的游戏,因此尝试重新安装游戏可能是最直接的解决方法。卸载当前的游戏版本,并从官方渠道......
  • vim跳转到函数开始([[)和转到声明(gd)的一些实现细节
    intro在vim的入门介绍中,明确说明了vim是一个"文本编辑器"(texteditor)而不是一个程序编辑器,和C/C++的预处理(preprocessor)一样,vim本身并不理解程序的结构。IntroductionintroVimstandsforViIMproved.ItusedtobeViIMi......
  • 超链接相关属性:跳转页面、跳转文件、跳转锚点、换成指定应用
    1.跳转页面我这里用绝对网络路径跳转百度、京东说一下img属性值target的含义,值_self是在当前页签跳转,相对的值_blank就是打开新标签跳转注意事项:点击前的超链接字体为蓝色,点击时为红色,点击后的超链接字体为紫色(只限第一次跳转,第一次以后点击前的超链接字体也为紫色,除非刷新......
  • 这个大纲可以根据具体需求进行调整,帮助学习者深入掌握 Excel 的高级功能。这个大纲为
    Excel初级使用教程大纲一、Excel简介Excel的基本概念Excel的主要功能与应用领域二、界面与基础操作Excel界面介绍菜单栏、工具栏、工作表单元格、行、列的概念工作簿与工作表的管理创建、保存和打开工作簿工作表的添加、删除、重命名三、数据输入与编辑......
  • Excel的基本应用__1
    1.模拟运算1.1单变量求解1.1.1步骤1.1.1效果1.2模拟运算表1.2.1步骤1.2.2效果2.选择性粘贴--转至3.Excel中如何使用和定义名称使用相当于全局变量,可以在不同表中调用3.1名称中使用常量3.2名称中使用函数调用可以在不同的表中调用3.3动态名......
  • c# winform 以excel形式导出表格中的数据
    1.需要安装EPPlus插件2.引入usingOfficeOpenXml;usingOfficeOpenXml.Style; 3.代码publicvoidExportDataGridViewToExcel(DataGridViewdgv,stringfilePath)    {      //设置EPPlus的许可证上下文      ExcelPackage.Licens......
  • el-input type='index' 输入非负数或保留一位小数的数字
    /^(0|[1-9]\d*)$/匹配非负整数^表示字符串的开始。0:匹配单个零。[1-9]\d*:匹配以1到9开头的数字,后面可以跟任意数量的数字(包括零)。$表示字符串的结束。/[^0-9]/g匹配任何非数字字符^在方括号内表示取反,意味着匹配不在指定范围内的字符0-9表示所有数字字符(从0到9)g是一......
  • 宝塔搬家后打开网站为何出现:No input file specified.
    当你在使用宝塔面板搬家后出现“Noinputfilespecified.”的错误,这通常是由于PHP解析器找不到正确的入口文件导致的。这种情况可能与 .user.ini 文件有关,尤其是当你打包网站源码时包含了根目录下的 .user.ini 文件。解决方案1.检查 .user.ini 文件删除 .user.in......
  • 【项目实战】JAVA 项目使用 EasyExcel 读取和导入数据到项目中
    1、easyExcel引入依赖进入官网GetStarted就可以了。(官方文档简单好用,跟着走就可以了。)https://alibaba-easyexcel.github.io/index.html<!--easyExcel--><dependency><groupId>com.alibaba</groupId><artifactId>easye......