前端通过input 输入框实现动态添加行 , 键盘上下左右点击可同步操作中心位置
1. input 代码 ,我们项目组的input封装了,不过不影响使用
通过 @keyup 事件绑定show方法,需要将当前行的信息以及index传递,方便操作
另外要单独给这些需要操作的输入框添加class,方便后面获取
<el-table-column className="mycell" min-width="auto;" align="center" label="尺寸" >
<template #default="scope">
<hd-inputupp @keyup="show($event,scope.$index)" class="table_input normalB_input" v-model="scope.row.clothSize" >
<template #append>
<div style="color:red;line-height: 24px">*</div>
</template>
</hd-inputupp>
</template>
</el-table-column> <el-table-column className="mycell" min-width="auto;" align="center" label="用量(KG)" >
<template #default="scope">
<el-input @keyup="show($event,scope.$index)" class="table_input normalY_input" v-model="scope.row.amount" >
<template #append>
<div style="color:red;line-height: 24px">*</div>
</template>
</el-input>
</template>
</el-table-column> <el-table-column className="mycell" min-width="auto;" align="center" label="理布票用量(KG)" >
<template #default="scope">
<el-input @keyup="show($event,scope.$index)" class="table_input focusB_input" v-model="scope.row.ticketAmount" >
<template #append>
<div style="color:red;line-height: 24px">*</div>
</template>
</el-input>
</template>
</el-table-column> <el-table-column className="mycell" min-width="auto;" align="center" label="价格" >
<template #default="scope">
<el-input @keyup="show($event,scope.$index)" class="table_input focusY_input" v-model="scope.row.price" >
<template #append>
<div style="color:red;line-height: 24px">*</div>
</template>
</el-input>
</template>
</el-table-column>
2. 方法实现
show(ev,index){
let newIndex ;
//通过ev 获取 当前input 名称 用于判断属于哪列
let clssName = ev.target.offsetParent.className;
//每一列
if(clssName.indexOf('normalB_input') != -1){
newIndex = index*4 ;//要操作几行就*几行
} else if (clssName.indexOf('normalY_input') != -1) {
newIndex = index*4 + 1 ;
} else if (clssName.indexOf('focusB_input') != -1) {
newIndex = index*4 + 2;
} else if (clssName.indexOf('focusY_input') != -1) {
newIndex = index*4 + 3;
}
let inputAll = document.querySelectorAll('.table_input input');
//向上 =38
if(ev.keyCode == 38){
//console.log("上");
//当焦点在第一行的时候 按向上的时候焦点要聚焦到前一列的最后一个
if(newIndex >=1 && newIndex<=3){
newIndex = newIndex + 47;
} else {
newIndex -= 4 ;
}
if( inputAll[newIndex] ){
inputAll[newIndex].focus();
}
}
//下 = 40
if(ev.keyCode == 40){
//console.log("下");
//当newIndex 在最后一行的时候 焦点要聚焦到 下一列的第一个
newIndex += 4 ;
if(newIndex>=inputAll.length){
this.add();//我们项目需求是按下键的时候会新增行
}
if( inputAll[newIndex] ){
inputAll[newIndex].focus();
}
}
//左 = 37
if(ev.keyCode == 37){
//console.log("左");
newIndex -= 1 ;
if( inputAll[newIndex] ){
inputAll[newIndex].focus();
}
}
//右 = 39
if(ev.keyCode == 39){
//console.log("右");
newIndex += 1 ;
if( inputAll[newIndex] ){
inputAll[newIndex].focus();
}
}
},
前端通过input 输入框实现动态添加行 , 键盘上下左右点击可同步操作中心位置的更多相关文章
- 移动端 input 输入框实现自带键盘“搜索“功能并修改X
主要利用html5的,input[type=search]属性来实现,此时input和type=text外观和功能没啥区别: html代码入下: <form action="" ...
- 前端限制input输入框(只能输入正整数)
<input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{th ...
- 【前端】input输入框只能输入大于等于0的正数
大于等于0的正数,允许小数 <input type="number" step="1" min="0" onkeyup="t ...
- H5页面input输入框含有键盘自带的表情符时显示异常
在做一个关于新闻的评论功能的H5页面时,需求里面要求能够发送表情显示表情,如果使用自定义的表情库,则在评论也还要加载大量的表情符图片,极大的影响加载速度,消耗流量,去看了下别的新闻网页版的评论部分也没 ...
- 移动端input“输入框”常见问题及解决方法
转自 https://www.cnblogs.com/ljx20180807/p/9837748.html 1. ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱: 当页input存在 ...
- Input 输入框
Input 输入框 通过鼠标或键盘输入字符 <el-input v-model="input" placeholder="请输入内容"></e ...
- 苹果微信input输入框被键盘遮挡
最近一个项目,input输入框需要在页面的最下面(position:fixed),这样,当键盘获取焦点的时候, 苹果自带键盘不会挡住输入框,但是搜狗输入法的键盘就会挡住.可以用以下方法解决: docu ...
- jQuery动态添加、删除按钮及input输入框
输入框的加减实现: <html> <head> <meta charset="utf-8"> <title>动态创建按钮</t ...
- input输入框失去焦点,软键盘关闭后,滚动的页面无法恢复到原来位置
H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...
- H5微信页面开发 IOS系统 input输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置,导致弹框里的按钮响应区域错位
H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...
随机推荐
- Linux df -h 显示磁盘空间满,但实际未占用满——问题分析
问题现象: 遇到一个问题,在系统上,告警提示磁盘空间不够,如下图所示: 问题分析: 1.首先使用 :du -h / --max-depth=1 命令查看各个目录的占用空间,试图找到占用较多空间的目 ...
- 003. html篇之《表单》
html篇之<表单> 一.结构 <form action="url" method="post" name=""> ...
- 来自StateOfJS调查:2022年JavaScript生态圈趋势报告(前端早读课)
原文 我这里记录些觉得有趣的. Promise.allSettled() 完成所有输入的方法,no matter what,返回对应的状态和值/原因,这对想知道所有返回状态的业务很好用:使用async ...
- Python系统模块os.py和sys.py常用函数
OS模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os.ge ...
- OnMicro BLE应用方案|蓝牙语音遥控器-OM6621E
随着物联网技术不断发展,家用电器往智能化方向持续迭代,使用红外遥控器这种传统的互动方式已经满足不了实际的使用需求,蓝牙语音遥控器作为人机交互新载体,逐渐取代传统红外遥控器成为家居设备的标配. 相比于传 ...
- Winform帮助文档(C#打开chm定位到特定页面)国内最全总结写法。原文文档带翻译
下面比较啰嗦,只一句即可:Help.ShowHelp(null,"C:\help.hcm", HelpNavigator.Topic,"index.htm")方 ...
- ssh 远程报错 Permission denied, please try again.(密码输入正确也无法登录)
登录KVM 查看sshd服务systemctl status sshd 报错显示error: cloud not get shadow information forXXX 问题原因: 服务器 ...
- go interface nil 比较
package main import "fmt" type MyselfError struct{} func (m *MyselfError) Error() string { ...
- sublime json格式化
1. 插件安装 install package-->pretty json 2. 快捷键设置 设置(preference):热键设置 [ {"keys": ["al ...
- 2021年RT-Thread开发者大会
Time:2021-12-18,地点:大中华6楼喜来登酒店 主办方: RT-Thread:寓意实时线程,瑞赛德 世界有成千上万个 RTOS(Real-time operating system,实时操 ...