javascript - 检查两个框之间的一系列复选框
问题描述
我有一个行表,每一行都有一个复选框。我已经建立了一个函数来检测是否按下了 shift 键,如果它已经被选中,那么一旦选中了 2 个复选框,它将选中它们之间的框。
该功能在某种程度上有效,但由于某种原因,我必须选中第三个框以勾选中间的框。
如何更改代码以便它检查第二次检查的框而不必检查第三次?
提前致谢。
下面是我的代码。
维数据:
data: () => ({
keycheck: false,
checkRows: []
})
创建:
created() {
window.addEventListener('keydown', e => {
if (e.keyCode === 16) {
this.keycheck = true
console.log('The shift key is being held down...')
}
})
window.addEventListener('keyup', e => {
if (e.keyCode === 16) {
console.log('Upper')
this.keycheck = false
this.checkRows = []
//console.clear();
}
})
},
methods: {
checkbox(key) {
if (this.keycheck) {
this.checkRows.push(key)
if (this.checkRows.length === 2) {
console.log(this.checkRows)
for (let i = this.checkRows[0]; i <= this.checkRows[1]; i++) {
let bData = this.displayed_array
bData[i]['rowCheck'] = true
console.log('test')
}
}
}
},
},
解决方案
代码似乎没有任何问题。但是,现在如果您不按住 shift,则第一次单击不会在checkRows
变量中注册。因此,您必须在第一次单击时按住 shift 才能在两次单击中工作。
if (this.keycheck) {
this.checkRows.push(key);
我在这个 codepen 中复制了它:https ://codepen.io/CodingDeer/pen/pozbadW
仅供参考,最好将数组设置为空,this.checkRows.length = 0;
因为它不会复制数组。
推荐阅读
- node.js - NodeJS SSH2未进行身份验证,定义了已知主机
- python - 为什么必须实例化 matplotlib.animation.FuncAnimation 才能工作?
- c# - 尝试创建一个 lambda 以将 linq 中的日期过滤到具有附加完整检查的实体
- html - 我可以将 html 网站功能作为后台程序吗?
- php - 在 PHP 应用程序中出现两个错误
- android - W AppOps:注意操作未完成:pkg com.google.android.gms
- r - 保留小数位并在输出表中垂直对齐小数
- javascript - 匹配下拉数量并计算总价
- testing - TestCafe:如何将页面上的按钮组件设置为单击但未释放的按下状态?
- java - 查找时间范围内任何时间平均活跃的工人数量