el-table 输入框校验完整代码
时间: 2023-07-26 21:31:56 浏览: 136
vue3 el-table多级表头收缩扩展的实现(JS原味版)
以下是一个基于 element-ui 的 el-table 输入框校验的完整示例代码:
```
<template>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名">
<template slot-scope="scope">
<el-input v-model="scope.row.name" placeholder="请输入姓名" @blur="validateField(scope.row, 'name')" :class="{error: scope.row.nameError}" clearable></el-input>
<div class="error-msg" v-show="scope.row.nameError">{{ scope.row.nameError }}</div>
</template>
</el-table-column>
<el-table-column prop="age" label="年龄">
<template slot-scope="scope">
<el-input v-model.number="scope.row.age" placeholder="请输入年龄" @blur="validateField(scope.row, 'age')" :class="{error: scope.row.ageError}" clearable></el-input>
<div class="error-msg" v-show="scope.row.ageError">{{ scope.row.ageError }}</div>
</template>
</el-table-column>
<el-table-column prop="email" label="邮箱">
<template slot-scope="scope">
<el-input v-model="scope.row.email" placeholder="请输入邮箱" @blur="validateField(scope.row, 'email')" :class="{error: scope.row.emailError}" clearable></el-input>
<div class="error-msg" v-show="scope.row.emailError">{{ scope.row.emailError }}</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '', age: '', email: '', nameError: '', ageError: '', emailError: '' },
{ name: '', age: '', email: '', nameError: '', ageError: '', emailError: '' },
{ name: '', age: '', email: '', nameError: '', ageError: '', emailError: '' }
]
}
},
methods: {
validateField(row, field) {
// 校验姓名
if (field === 'name') {
if (!row.name) {
row.nameError = '姓名不能为空'
} else {
row.nameError = ''
}
}
// 校验年龄
if (field === 'age') {
if (!row.age) {
row.ageError = '年龄不能为空'
} else if (isNaN(row.age)) {
row.ageError = '年龄必须为数字'
} else if (row.age < 0 || row.age > 150) {
row.ageError = '年龄必须在0-150之间'
} else {
row.ageError = ''
}
}
// 校验邮箱
if (field === 'email') {
if (!row.email) {
row.emailError = '邮箱不能为空'
} else if (!/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(row.email)) {
row.emailError = '邮箱格式不正确'
} else {
row.emailError = ''
}
}
},
validateTable() {
let isValid = true
this.tableData.forEach(row => {
if (row.nameError || row.ageError || row.emailError) {
isValid = false
}
})
return isValid
}
}
}
</script>
```
这个示例中,我们使用了 el-input 组件来作为表格的输入框,使用了 validateField 方法来校验每一个输入框的值,使用了 validateTable 方法来判断整个表格中是否有错误存在。同时,我们使用了 v-show 来控制错误提示信息的显示与隐藏。
阅读全文