Javascript 在两个复选框之间选中一系列复选框
我有一个表格的行,每行有一个复选框。我已经建立了一个功能,检测是否按下了shift键,如果有,那么一旦选中了2个复选框,它将选中它们之间的复选框 该函数在某种程度上起作用,但出于某种原因,我必须勾选第三个框,以勾选中间的框 如何更改代码,使其选中第二个复选框,而不必选中第三个复选框 提前谢谢 下面是我的代码 Vue数据:Javascript 在两个复选框之间选中一系列复选框,javascript,arrays,vue.js,Javascript,Arrays,Vue.js,我有一个表格的行,每行有一个复选框。我已经建立了一个功能,检测是否按下了shift键,如果有,那么一旦选中了2个复选框,它将选中它们之间的复选框 该函数在某种程度上起作用,但出于某种原因,我必须勾选第三个框,以勾选中间的框 如何更改代码,使其选中第二个复选框,而不必选中第三个复选框 提前谢谢 下面是我的代码 Vue数据: data: () => ({ keycheck: false, checkRows: [] }) 创建: 创造{ window.addEventListener
data: () => ({
keycheck: false,
checkRows: []
})
创建:
创造{
window.addEventListener'keydown',e=>{
如果e.keyCode===16{
this.keycheck=true
控制台。记录“按下换档键…”
}
}
window.addEventListener'keyup',e=>{
如果e.keyCode===16{
控制台。记录'Upper'
this.keycheck=false
this.checkRows=[]
//控制台。清除;
}
}
},
方法:{
复选框键{
如果这是我的钥匙{
此为.checkRows.pushkey
如果this.checkRows.length==2{
console.logthis.checkRows
对于let i=this.checkRows[0];i来说,代码似乎没有任何问题。但是,如果您现在没有按住shift键,则第一次单击不会在checkRows变量中注册。因此,您必须在第一次单击时按住shift键,它才能在两次单击中工作
if (this.keycheck) {
this.checkRows.push(key);
我在这个代码笔中复制了它:
仅供参考,最好使用this.checkRows.length=0;将数组设置为空,因为它不制作数组的副本。我发现了这一点。通过添加此。$forceUpdate,它会更新数据。这之前是通过第三次单击完成的
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')
this.$forceUpdate()
}
}
}
},
如何将值绑定到复选框和触发复选框?如上面的示例所示,使用单击复选框谢谢…但是在您的示例中,我必须先选择一个框,然后取消选择它,然后我可以按住shift键并选择多个框…有什么想法吗?别担心!只是解决了。添加:这个。$forceUpdate;我将添加一个答案!t汉克斯