zoukankan      html  css  js  c++  java
  • vue shift全选文件

    效果图:

     当我选测试1的时候,然后按照shift键,在去选中测试6 ,那么测试1 到6的就都实现的复选。

    第一步:进行样式布局,然后给双选框加一个change事件。

     第二步,在对数据进行添加值,这步就省略了。。。

    第三步,写上按住shitf事件,和松开shift事件。

     最后对change事件进行逻辑处理就可以了。

    完整代码及思路如下:

    <template>
        <div class="index">
            <div  v-for="(item, index) in datalist" :key="index" >
                <input class="checkbox"  @change = "pinSelect(item,index)"  ref="multipleTable" type="checkbox" :checked="item.check"  />
                <label>{{ item.name }}</label>
            </div>    
        </div>
    </template>
    <script>
    export default {
        data() {
            return {
                datalist: [
                    {
                        name: "测试1",
                        check: false,
                    },
                    {
                        name: "测试2",
                        check: false,
                    },
                    {
                        name: "测试3",
                        check: false,
                    },
                    {
                        name: "测试4",
                        check: false,
                    },
                    {
                        name: "测试5",
                        check: false,
                    },
                    {
                        name: "测试6",
                        check: false,
                    },
                    {
                        name: "测试7",
                        check: false,
                    },
                    {
                        name: "测试8",
                        check: false,
                    },
                    {
                        name: "测试9",
                        check: false,
                    },
                    {
                        name: "测试10",
                        check: false,
                    },
                ],
                 origin: -1, // 这里给一个变量作为起点
                 pin: false, // 这里给一个变量,默认为false,不按住
                 multipleSelection: [],
                 listXuan:[]
            };
        },
        methods:{
        pinSelect (item, index){
           item.check=item.check==true?false:true; //判断是否选择
            if(item.check&&!this.pin)
            [
             this.origin=item.index
            ]
             if (this.pin && item.check) 
             {
               const min=this.origin;
               const max=item.index;
               if(min>max)
               {
                 min=item.index;
                 max=this.origin
               }
                  let dbckeck=false;
                  for (let i =0; i < this.datalist.length; i++) {
                    if(this.datalist[i].index==min&&!dbckeck){
                      this.datalist[i].check=true;
                      dbckeck=true;
                    }
                    if(dbckeck)
                    {
                      this.datalist[i].check=true;
                    }
                    if(this.datalist[i].index==max&&dbckeck)
                    {
                    this.datalist[i].check=true;
                     dbckeck=false;
                    }
                
               }
             }
     
          },
        },
           mounted(){
          window.addEventListener('keydown', code => { // 这个是获取键盘按住事件
          // console.log(code); // 这个是你按住键盘打印出键盘信息,在浏览器中自行查看
          console.log("我按住键盘");
          if (code.keyCode === 16 && code.shiftKey) { // 判断是否按住shift键,是就把pin赋值为true
              this.pin = true;   
            }
          });
          window.addEventListener('keyup', code => { // 这个是获取键盘松开事件
              console.log("我松开键盘");
            if(code.keyCode === 16){ // 判断是否松开shift键,是就把pin赋值为false
              this.pin = false;
            }
          });
        },
          created(){
          this.datalist.forEach((item, index) => {// 遍历索引,赋值给data数据
            item.index = index;
          })
        }
    };
    </script>
    <style scoped>
    
    </style>
    

      

    参考:https://blog.csdn.net/weixin_43734545/article/details/103582536

    他的这个例子,是以table为例的

  • 相关阅读:
    C++ 栈和队列
    epoll 实际使用
    js数组的操作
    nodejs 基本类型和语法
    epoll 简单介绍及例子
    epoll 应用
    linux 查看系统状态方法
    struct stat结构体的详解和用法
    Asp.Net_获取IP地址
    Asp.Net_的传值跟存储值操作
  • 原文地址:https://www.cnblogs.com/lovebear123/p/14283289.html
Copyright © 2011-2022 走看看