美文网首页
el-table表格内双击或单击单元格编辑输入框、日期等

el-table表格内双击或单击单元格编辑输入框、日期等

作者: 回到唐朝做IT | 来源:发表于2021-03-24 10:28 被阅读0次

需求

在el-table中想要直接点击单元格直接由文字显示变为编辑框状态,而非一整行编辑或者通过展示模态框编辑,这样目标性会比较清楚且页面较简洁。下面直接上代码!

实现效果

html代码

<template>
  <!-- table表格内行内编辑input、日期组件等 -->
  <div id="app">
    <!--  @cell-dblclick="tableDbEdit" 当单元格被双击击时会触发tableDbEdit事件,将文字变成input输入框,也可以使用单击事件@cell-click=''-->
    <el-table ref="table" :data="tableList" border style="width: 100%" @cell-dblclick="tableDbEdit">
      <!-- 编辑input组件-->
      <el-table-column prop="name" label="工作名称">
        <template slot-scope="scope">
          <!-- 条件判断如果满足则显示表单,否则默认展示文字 -->
          <el-input v-model="scope.row.name" v-if="showInput == `name${scope.row.id}`"
            @blur='blurInput(scope.row.id,"name",scope.row.name)' v-focus>
          </el-input>
          <p v-else>{{scope.row.name}}</p>
        </template>
      </el-table-column>
      <!-- 编辑日期组件-->
      <el-table-column prop="planStartTime" label="预计开始" align="center">
        <template v-slot="scope">
          <el-date-picker v-model="scope.row.planStartTime" v-if="showInput == `planStartTime${scope.row.id}`"
            type="date" :clearable="false" value-format="yyyy-MM-dd" placeholder="请选择开始日期"
            @blur='blurInput(scope.row.id,"planStartTime",scope.row.planStartTime)' v-focus>
          </el-date-picker>
          <p v-else>{{scope.row.planStartTime}}</p>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

js代码

<script>
export default {
  data() {
    return {
      //表格数据
      tableList: [
        {
          id: 0,
          name: "规划许可阶段",
          planStartTime: "2021-03-09"
        },
        {
          id: 1,
          name: "施工许可阶段",
          planStartTime: "2021-03-09"
        }
      ],
      showInput: "",
      oldData: {}
    }
  },
  directives: {
    // 通过自定义指令实现的表单自动获得光标的操作
    focus: {
      inserted: function(el) {
        if (el.tagName.toLocaleLowerCase() == "input") {
          el.focus()
        } else {
          if (el.getElementsByTagName("input")) {
            el.getElementsByTagName("input")[0].focus()
          }
        }
        el.focus()
      }
    },
    focusTextarea: {
      inserted: function(el) {
        if (el.tagName.toLocaleLowerCase() == "textarea") {
          el.focus()
        } else {
          if (el.getElementsByTagName("textarea")) {
            el.getElementsByTagName("textarea")[0].focus()
          }
        }
        el.focus()
      }
    }
  },
  // 方法
  methods: {
    // 当input失去光标后进行的操作
    async blurInput(id, name, value) {
      let obj = {}
      // 判断数据是否有所改变,如果数据有改变则调用修改接口
      if (this.oldData[name] != value) {
        obj[name] = value //被改变的数据
        // 然后再写调用接口,提交内容的东西就可以了
        console.log("===值改变了")
      }
      this.showInput = ""
    },
    /*
    方法参数皆为框架方法的默认传参
    row     行数据
    column  被点击的触发了方法的单元格
    event   事件
    */
    tableDbEdit(row, column, event) {
      this.showInput = column.property + row.id
      this.oldData[column.property] = row[column.property]
    }
  }
}
</script>

相关文章

  • el-table表格内双击或单击单元格编辑输入框、日期等

    需求 在el-table中想要直接点击单元格直接由文字显示变为编辑框状态,而非一整行编辑或者通过展示模态框编辑,这...

  • 表格前后批量加符号或者数字字母

    1、双击打开excel表格软件以后,为了示范先在表格A列单元格编辑好需要添加的文本内容; 2、编辑好文本内容以后,...

  • 读《电脑第三课》

    一、插入与删除表格的行或列,在行号或列号单击右键_插入或册删除。 二、单元格中字符的格式。 XzCOz 选择单元格...

  • 数据录入基础

    (1)数据类型:数值、日期时间、文本(包括身份账号、银行卡号、手机号、文字等)、公式 (2)双击可以在单元格内输入...

  • PQ操作

    第一式 不规范日期转换 单击数据 从表格 在创建表对话框中单击确定 进入查询编辑器 即可正常 单击开始 关闭...

  • word中的表格基础介绍

    1.创建基础表格 方法一:依次单击【插入】—【表格】,在【表格】下拉按钮中通过拖动鼠标来确定单元格数量,最后单击鼠...

  • Running a Simulation ~Variable S

    若要更改单条线的颜色,请到绘图顶部的表格并将光标放在变量的颜色栏中。1.单击鼠标右键(或在颜色单元格中双击);2....

  • 双击实现编辑表格单元格

    双击哪个单元格就编辑哪个单元格,先上效果图, 实现思路: 在单元格下添加一个模板,模板里面有正常状态的span和编...

  • Excel基础——数据的输入编辑

    一、Excel的输入常用编辑操作 1.数据的输入 (1)双击输入(2)选中单元格后,上方的文本输入框输入 2.格式...

  • element-ui el-tab

    vxe-table vue实现表格单元格的拆分、合并 el-table的那些特殊用法 element-ui表格列e...

网友评论

      本文标题:el-table表格内双击或单击单元格编辑输入框、日期等

      本文链接:https://www.haomeiwen.com/subject/btpchltx.html