Vue.js实现可编辑的表格


Posted in Javascript onDecember 11, 2019

本文实例为大家分享了Vue.js实现可编辑的表格的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <link rel="stylesheet" type="text/css" href="bootstrap.min.css" >
 <style type="text/css">
   table tr td{
   text-align: center;
   }
  .btn-info{
   margin-left: 5px;
  }

  .add,.addBox{
   margin: 10px 0px 10px 10px;
  }
  .submit{
   margin-left: 172px;
  }
  /*全删*/
  .delAll{
   margin-left: 10px;
  }
  /*新增*/
  fieldset{
   margin-left: 10px;
  }
 </style>
</head>
<body>

<div id="app">
<button class="btn btn-primary btn-sm addBox" @click="addBox">添加</button>
<button class="btn btn-sm btn-danger delAll" @click="delAll">批量删除</button>
 <table class="table table-bordered" >
 <thead>
 <tr>
  <td><input type="checkbox" @click="allSelect" v-model="checked"></td>
  <td>学号</td>
  <td>姓名</td>
  <td>年纪</td>
  <td>操作</td>

 </tr>
 </thead>
 <tbody>
  <tr v-for="person,index in people">
  <td><input type="checkbox" v-model="selected" v-bind:value="person.sid"></td>
  <td @click="edit(index)" contenteditable="true">{{person.sid}}</td>
  <td @click="edit(index)" contenteditable="true">{{person.sname}}</td>
  <td @click="edit(index)" contenteditable="true">{{person.sage}}</td>
  <td><button @click="del(index)" class="btn btn-danger btn-sm">删除</button><button @click="update(index)" class="btn btn-info btn-sm">编辑</button></td>
  </tr>
 </tbody>

 </table>

<fieldset v-show="seen" >
 <legend>新增用户</legend>
 <div class="">
 <p>
  <label>学号:</label>
  <input type="text" v-model="newPeople.sid">
 </p>
 <p>
  <label>姓名:</label>
  <input type="text" v-model="newPeople.sname">
 </p>
 <p>
  <label>年龄:</label>
  <input type="number" v-model="newPeople.sage">
 </p>
 <p>
  <button class="btn btn-success btn-sm submit" @click="add">提交</button>
 </p>
</div>


</fieldset> 
<!-- 编辑界面 -->
<fieldset v-show="editSeen">
 <legend>编辑用户</legend>


<div class="">
 <p>
  <label>学号:</label>
  <input type="text" v-model="editPeople.sid" value="{{sid}}">
 </p>
 <p>
  <label>姓名:</label>
  <input type="text" v-model="editPeople.sname" value="{{sname}}">
 </p>
 <p>
  <label>年龄:</label>
  <input type="number" v-model="editPeople.sage" value="{{sage}}">
 </p>
 <p>
  <button class="btn btn-success btn-sm submit" @click="editSubmit">提交</button>
 </p>
</div>
</fieldset> 
</div>


 <script type="text/javascript" src="vue.min.js"></script>
 <script type="text/javascript">
 var data ={
    people:[ 
     {'sid':'1043','sname':'张三','sage':18}, 
     {'sid':'2434','sname':'赵六','sage':43}, 
     {'sid':'3424','sname':'李四','sage':42}, 
     {'sid':'1231','sname':'王五','sage':35} 
    ],
    newPeople:{
     'sid':'','sname':'','sage':''
    },
    seen:false,
    editSeen:false,
    checked:false,
    selected:[],
    editPeople:{
     'sid':'','sname':'','sage':''
    }

   } ;
  var app = new Vue({
  'el':'#app',
   data:data,

   methods:{
   // 添加
   addBox:function(){
    this.seen = this.seen == false ? true : false;
   },
   //删除
   del:function(index){
    console.log(11);
    this.people.splice(index,1);
   },
   //提交
   add:function(){
     //插入到people中
     this.people.push(this.newPeople);

     this.newPeople = {};
     this.seen = false
   },
   //全选
   allSelect:function(){
    if(this.selected.length != this.people.length){
     this.selected = [];
     for(var i = 0; i<this.people.length;i++){
      this.selected.push(this.people[i].sid);
      console.log(this.people[i].sid);

     }

    }else{
     this.selected = [];
    }

   },
   //批量删除
   delAll:function(){
    for(var j = 0; j< this.selected.length;j++){
     for(var i = 0; i< this.people.length; i++){ 
      if(this.selected[j] == this.people[i].sid){
       this.people.splice(i,1);
      }
     }
    }

   },
    //编辑
    update:function(index){
    this.editSeen = true;
     this.editPeople = this.people[index];



    },
    //编辑后提交
    editSubmit:function(){
    this.editSeen = false;

    }

   },
   watch:{
   "selected":function(){
    if(this.selected.length == this.people.length){
     this.checked = true;
    }else{
     this.checked = false;
    }
   }
   }
  })
 </script>
</body>
</html>

Vue.js实现可编辑的表格

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript获得地址栏参数的两种方法
Nov 08 Javascript
js获取单选框或复选框值及操作
Dec 18 Javascript
javascript内存管理详细解析
Nov 11 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
整理Javascript基础语法学习笔记
Nov 29 Javascript
js实现根据身份证号自动生成出生日期
Dec 15 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 Javascript
关于定制FileField中的上传文件名称问题
Aug 22 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
详解react native页面间传递数据的几种方式
Nov 07 Javascript
vue将单页面改造成多页面应用的方法
Nov 25 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
Dec 11 #Javascript
用JS实现一个简单的打砖块游戏
Dec 11 #Javascript
js消除图片小游戏代码
Dec 11 #Javascript
详解vue中$nextTick和$forceUpdate的用法
Dec 11 #Javascript
基于jQuery实现可编辑的表格
Dec 11 #jQuery
jQuery实现可编辑的表格
Dec 11 #jQuery
vue element自定义表单验证请求后端接口验证
Dec 11 #Javascript
You might like
十天学会php之第二天
2006/10/09 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
学习Node.js模块机制
2016/10/17 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python使用MD5加密字符串示例
2014/08/22 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
django表单的Widgets使用详解
2019/07/22 Python
Python ATM功能实现代码实例
2020/03/19 Python
Python识别验证码的实现示例
2020/09/30 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
人代会标语
2014/06/30 职场文书
离婚协议书格式
2015/01/26 职场文书
董事长助理岗位职责
2015/02/11 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
护士实习自荐信
2015/03/06 职场文书
Redis基本数据类型Set常用操作命令
2022/06/01 Redis