el-table表格修改每列使用el-input对其做错误提示

该博客介绍了如何在基于Element-UI的表格中实现单元格的编辑功能,并添加实时错误提示。通过监听输入@blur和@focus事件,结合v-show和条件类来控制编辑状态和错误显示。当输入不符合规则时,显示错误信息并改变输入框样式。同时,提供了编辑、保存和取消编辑的操作处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

el-table表格修改每列使用el-input对其做错误提示。
有时候需要在列表里面进行直接修改,并且有错误提示信息,如下图所示:
在这里插入图片描述


解决方案:

使用v-show="!scope.row.canEdit"控制显示与隐藏,图标在element图标库去找,我用的自己公司的图标库里面的图标class="icon icon-bianji"。错误信息提示:class="scope.row.showErr ? 'input-error' : ''",错误信息展示<span v-show="scope.row.canEdit && scope.row.errMsg" class="errmsg-style">{{ scope.row.errMsg }}</span>。监听输入@blur="listenInput(scope.row)" @focus="listenInput(scope.row)"

 				<span
                  v-show="!scope.row.canEdit">
                  {{ scope.row.limitValue }}
                </span>
                <i
                  class="icon icon-bianji"
                  style="margin-left: 10px;"
                  v-show="!scope.row.canEdit"
                  slot="suffix"
                  @click="onEdit(scope.row)">
                </i>
                <el-input
                  slot="reference"
                  v-show="scope.row.canEdit"
                  :class="scope.row.showErr ? 'input-error' : ''"
                  size="small"
                  v-model="scope.row.limitValue"
                  @blur="listenInput(scope.row)"
                  @focus="listenInput(scope.row)"
                  style="width: 60%"
                  type="text">
                </el-input>
                <i class="icon icon-chenggong" v-show="scope.row.canEdit" style="color: #02b212; margin-left: 5px;" @click="onSave(scope.row)"></i>
                <i class="icon icon-shibai" v-show="scope.row.canEdit" style="color: #e6a23c; margin-left: 5px;" @click="cancleEdit(scope.row)"></i><br />
                <span v-show="scope.row.canEdit && scope.row.errMsg" class="errmsg-style">{{ scope.row.errMsg }}</span>

数据获取成功后,将数据添加三个字段:

// 数据获取成功
    dataLoadSuccess(res) {
      let data = JSON.parse(JSON.stringify(res.data.res));
      data.forEach(item => {
        item.canEdit = false; //是否编辑
        item.showErr = false; //是否显示错误提示
        item.errMsg = ''; //错误提示信息
      });
    },

监听输入:

// 监听输入
    listenInput(row) {
      if (!row.limitValue) {
        row.errMsg = '请输入配额数';
        row.showErr = true;
      }
      let reg = /^\d{1,10}$/;
      if (!reg.test(row.limitValue)) {
        row.errMsg = '请输入正确的配额数';
        row.showErr = true;
      } else if (
        row.limitValue < this.form.usedValue &&
        this.form.isUsedDisplay
      ) {
        row.errMsg = '总配额不可小于已用配额';
        row.showErr = true;
      } else {
        row.errMsg = '';
        row.showErr = false;
      }
    },

点击编辑:

	onEdit(row) {
      row.canEdit = true;
    },

保存按钮:

// 保存修改,有错误不可以保存
    onSave(row) {
      if (row.showErr || row.errMsg) {
        return;
      }
      .....

取消按钮:

//取消编辑
    cancleEdit(row) {
      row.canEdit = false;
      row.errMsg = '';
      row.showErr = false;
    },

错误提示样式:

.input-error /deep/ .el-input__inner {
  border: 1px solid red;
}
.errmsg-style {
  color: red;
}
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、付费专栏及课程。

余额充值