牛骨文教育服务平台(让学习变的简单)
博文笔记

使用vue.js实现checkbox的全选,和部分删除,部分提交

创建时间:2018-01-31 投稿人: 浏览次数:152

直接上代码:

<template>
  <div class="select">
    <ul>
      <li v-for="(item,index) in lesson" style="margin-top: 15px;">
        <label class="checkbox-label">
          <input v-model="selectArr" :value="index"  :checked="index == 0" type="checkbox" class="checkbox-input event-allChooseHouse" />
          <span class="checkbox-core"></span>
          <span class="text">{{item.name}}</span>
        </label>
      </li>
    </ul>
    <button @click="deleteData">删除</button>
    <input type="checkbox" @click="submitData">提交的

    <div class="selectAll" style="margin-top: 15px;">
      <label class="checkbox-label">
        <input type="checkbox" class="checkbox-input event-allChooseHouse" @click="selectAll" value="" >
        <span class="checkbox-core"></span>
        <span class="text">全选</span>
      </label>
    </div>
  </div>
</template>

<script>
  var lesson = [
    {id:"1001",name:"vue"},
    {id:"1002",name:"angurlar"},
    {id:"1003",name:"react"},
    {id:"1004",name:"javascript"},
    {id:"1005",name:"jquery"}
  ];
export default {
  name: "",
  data () {
    return {
      msg: "选择",
      lesson:lesson,
      selectArr: []
    }
  },
  methods: {
    selectAll(event) { //全选
      var _this = this;
      console.log(event.currentTarget.checked);
      if (!event.currentTarget.checked) {
        this.selectArr = [];
      } else {         //实现全选
        _this.selectArr = [];
        _this.lesson.forEach(function(item, i) {
          _this.selectArr.push(i);
        });
        console.log(_this.selectArr);
      }
    },
    deleteData(){ //删除
        var arr = [];
        var len = this.lesson.length;
        for(var i=0;i<len;i++){
            if(this.selectArr.indexOf(i)>=0){
                console.log(this.selectArr.indexOf(i));
            }else {
                console.log("lesson[i]");
                console.log(lesson[i]);
                arr.push(lesson[i]);
            }
        }
        this.lesson = arr;
        this.selectArr = [];
    },
    submitData(){ //提交
        var subArr = [];
        var len = this.lesson.length;
        for(var i= 0;i<len;i++){
            if(this.selectArr.indexOf(i)>=0){
                subArr.push(lesson[i]);
            }
        }
        if(subArr.length==0){
            alert("请勾选后再提交");
        }else {
          console.log("提交的");
          console.log(subArr);
        }

    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  /*组件 start*/
  .checkbox-label{padding: 0 0.1rem;display: flex;align-items: center;}
  .checkbox-label .checkbox-input{display: none;opacity: 0;}
  .checkbox-label .checkbox-core{
    display: inline-block;
    border-radius: 100%;
    /*background: #e6e7e9;*/
    border:1px solid #c2c2c2;
    position: relative;
    width: 20px;
    height: 20px;
    vertical-align: middle;
  }
  .checkbox-core:after {
    border: 2px solid transparent;
    border-left: 0;
    border-top: 0;
    content: " ";
    top: 2px;
    left: 8px;
    position: absolute;
    width: 6px;
    height: 12px;
    -webkit-transform: rotate(45deg) scale(0);
    transform: rotate(45deg) scale(0);
    -webkit-transition: -webkit-transform .2s;
    transition: -webkit-transform .2s;
    transition: transform .2s;
    transition: transform .2s,-webkit-transform .2s;
  }
  .checkbox-input:checked+.checkbox-core {background-color: #26a2ff;border-color: #26a2ff;}
  .checkbox-input:checked+.checkbox-core:after {border-color: #fff;-webkit-transform: rotate(45deg) scale(1);transform: rotate(45deg) scale(1);}
  /*组件 end*/
</style>

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。