el-table 输入框校验完整代码,校验失败输入框边框变红
时间: 2023-08-04 21:32:51 浏览: 520
好的,以下是一个基于 Element UI 的 el-table 中输入框校验的完整代码示例:
```html
<template>
<div>
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄">
<template slot-scope="scope">
<el-form-item :prop="'age.' + scope.$index">
<el-input v-model="scope.row.age" @blur="validate(scope.$index)"></el-input>
</el-form-item>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: '' },
{ name: '李四', age: '' },
{ name: '王五', age: '' }
]
}
},
methods: {
validate(index) {
const age = this.tableData[index].age
if (!age || isNaN(age)) {
this.$refs.elForm.validateField(`age.${index}`, err => {
if (err) {
this.$refs.elTable.$el.querySelector(`.el-table__row:nth-of-type(${index + 1}) .el-input__inner`).style.border = '1px solid red'
} else {
this.$refs.elTable.$el.querySelector(`.el-table__row:nth-of-type(${index + 1}) .el-input__inner`).style.border = ''
}
})
} else {
this.$refs.elTable.$el.querySelector(`.el-table__row:nth-of-type(${index + 1}) .el-input__inner`).style.border = ''
}
}
}
}
</script>
```
上述代码中,我们在 el-table-column 中使用了作用域插槽,通过 `scope.row.age` 和 `scope.$index` 分别绑定了表格数据中对应的 age 值和索引。
在输入框的 blur 事件中,我们调用了 `validate` 方法,该方法中通过 `this.$refs.elForm.validateField` 校验了当前输入框的值,并根据校验结果来改变输入框边框的颜色。
需要注意的是,在 `validateField` 校验方法的回调函数中,我们通过 `this.$refs.elTable.$el.querySelector` 获取了当前输入框所在行的 DOM 节点,并手动设置了其边框的样式。如果校验失败,我们将边框颜色设置为红色,否则清空样式即可。
希望这个示例对你有所帮助!
阅读全文