elementui中的table中写入input操作等,并监听变化以及更改为输入的数据

12 篇文章 0 订阅

在这里插入图片描述

<template>
  <div class="app-container road-sprinkler-workload">
    <div class="table-bar block car">
      <el-table v-loading="loading" :data="data" height="calc(82vh - 173px)">
        <el-table-column label="设备名称" header-align="left" prop="deviceName" />
        <el-table-column label="单位" header-align="left" prop="deviceType" />
        <el-table-column label="联系方式" header-align="left">
          <template v-slot="scope">
            <span v-if="scope.row.modify">{{ scope.row.tel }}</span>
            <el-input v-else v-model="scope.row.tel" @change="cc(scope.$index, scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column label="操作" width="100" header-align="left">
          <template v-slot="scope">
            <el-button size="mini" type="text" v-if="scope.row.modify" @click="view(scope.$index, scope.row)">
              修改
            </el-button>
            <el-button size="mini" type="text" v-else @click="save(scope.$index, scope.row)">
              保存
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>
<script>
export default {
  name: "HelloWorld",
  data() {
    return {
      data: [
        {
          deviceType: "类型",
          deviceName: "设备",
          id: 1,
          tel: "18765823218",
          modify: true,
        },
        {
          deviceType: "类型1",
          deviceName: "设备1",
          id: 2,
          tel: "15864715241",
          modify: true,
        },
      ],
      bb: {},
    };
  },
  created() {},
  watch: {
    //监听器的作用就是用来监听数据是否发生了变化,变化后可以进行一些其他操作
    //只要没有发生变化,就没有办法进行其他的操作
    bb: function (newData, oldData) {
      //newData是更新后的数据
      //oldData是旧数据
      // newData.tel = 1111;
      console.log("监听变化:", newData, oldData);
    },
  },
  methods: {
    // 修改
    view(index, row) {
      row.modify = false;
      this.data[index].modify = false;
      this.bb = this.data[index];
      this.data = JSON.parse(JSON.stringify(this.data));
      console.log("修改:", index, row, this.data[index].modify);
    },
    // 保存
    save(index, row) {
      var regExp = new RegExp("^1[3578]\\d{9}$");
      if (regExp.test(row.tel)) {
        // this.modify = true; //输入框是否为可输入状态
        this.data[index].modify = true;
        this.data = JSON.parse(JSON.stringify(this.data));
      } else {
        console.log("手机号错误");
      }
    },
    cc(index) {
      console.log("更改后的值:", this.data[index]);
      this.bb = this.data[index];
    },
  },
};
</script>
<style scoped>
.road-sprinkler-workload {
  display: flex;
  flex-direction: column;
  background: #f5f7fa;
}
.block {
  margin: 6px;
  padding: 12px;
  box-shadow: 0 1px 4px rgb(0 21 41 / 8%);
  border-radius: 3px;
  background: #fff;
}
.search-bar {
  padding: 18px 12px 0;
}
.table-bar {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
}
.table-container {
  flex: 1;
}
.zhandian {
  width: 150px;
}
.select {
  width: 126px;
  margin-right: 8px;
}
.reset {
  float: right;
}
</style>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在el-table使用el-input进行编辑时,可以根据需要添加错误提示信息。可以通过以下解决方案来实现: 1. 首先,为el-table的每列添加el-input组件。可以使用v-model指令绑定每列的值。 2. 对于需要错误提示的列,在el-input上添加一个错误提示的元素,比如一个图标或文字。 3. 在el-input的值改变时,可以使用@input事件监听输入。可以在这个事件处理函数进行验证逻辑。 4. 在验证逻辑,可以使用正则表达式来验证输入的内容是否符合要求。如果不符合要求,可以设置错误提示的内容,然后显示错误提示。 参考代码如下: ``` <el-table :data="tableData"> <el-table-column prop="name" label="名称"> <template slot-scope="scope"> <el-input v-model="scope.row.name" @input="validateInput(scope.row)"></el-input> <span v-if="scope.row.showErr" class="error-message">{{ scope.row.errMsg }}</span> </template> </el-table-column> <!-- 其他列的定义 --> </el-table> ``` ``` methods: { validateInput(row) { if (!row.name) { row.errMsg = '请输入名称'; row.showErr = true; } else { row.errMsg = ''; row.showErr = false; } } } ``` 这样,在el-table使用el-input进行编辑时,可以实现错误提示的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [el-table表格修改每列使用el-input对其做错误提示](https://blog.csdn.net/migexiaoliang/article/details/126236093)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [【elementui】el-table的el-input校验](https://blog.csdn.net/bidepanm/article/details/126172141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值