Element-ui中表单(Form)校验的几种形式及表单嵌套表格含上传(Upload)组。。。

更新时间:2023-05-12 10:22:52 阅读: 评论:0

Element-ui中表单(Form)校验的⼏种形式及表单嵌套表格含上传(Upload)
组。。。
1. Element-ui中表单(Form)校验的⼏种形式
1.1 基础 / ⾃定义
<template>
<el-form :model="ruleForm":rules="rules" ref="ruleForm" label-width="100px">
<el-form-item label="活动名称" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model.number="ruleForm.age"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">⽴即创建</el-button> <el-button @click="retForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</template>
<script>
var checkAge=(rule, value, callback)=>{
if(!value){
return callback(new Error('年龄不能为空'));
}
if(!Number.isInteger(value)){
callback(new Error('请输⼊数字值'));
}el{
if(value < rule.max_age){
callback(new Error('必须年满18岁'));
}el{
callback();
}
}
};
export default{
data(){
return{
ruleForm:{
name:'',
age:''
},
rules:{
name:[
{ required:true, message:'请输⼊活动名称', trigger:'blur'},
{ min:3, max:5, message:'长度在 3 到 5 个字符', trigger:'blur'}
],
age:[
{max_age:18, validator: checkAge, trigger:'blur'}// checkAge⾃定义规则函数]
}
};
},
methods:{
submitForm(formName){
this.$refs[formName].validate((valid)=>{
if(valid){
alert('submit!');
}el{
console.log('error submit!!')
}
});
},
retForm(formName){
this.$refs[formName].retFields();
}
}
}
</script>
1.2 ⾏间校验
<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px">
<el-form-item
label="年龄"
prop="age"
:rules="[
{ required:true, message:'年龄不能为空'},
{ type:'number', message:'年龄必须为数字值'}
]">
<el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
</el-form-item>
</el-form>
1.4 ⾏间⾃定义校验
<template>
<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px">
<el-form-item
label="年龄"
prop="age"
:rules="[
{max_age:18, validator: checkAge, trigger:'blur'}
]">
<el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
</el-form-item>
</el-form>
</template>
<script>
export default{
data(){
return{}
},
methods:{
checkAge(rule, value, callback){
if(!value){
return callback(new Error('年龄不能为空'));
}
if(!Number.isInteger(value)){
callback(new Error('请输⼊数字值'));
}el{
if(value < rule.max_age){
callback(new Error('必须年满18岁'));
}el{
callback();
}
}
},
}
}
</script>
1.5 ⾏间循环⾃定义校验
关键代码 :prop="domains.${index}.value",这是 Element-ui 规定的格式,渲染后的结果为:domains.1.value。
<template>
<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px">
<el-form-item
v-for="(item, index) in dynamicValidateForm.domains"
:key="item.index"
:label="'域名' + index"
:prop="`domains.${index}.value`"
:rules="[
{ required:true, message:'域名不能为空', trigger:'blur'},
{ reg:/^--------$/, validator: checkDomain, trigger:'blur'}
]">
<el-input v-model="item.value" placeholder="请输⼊内容"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default{
data(){
return{
dynamicValidateForm:{
domains:[
{ value:''},
{ value:''},
{ value:''},
]
}
};
},
methods:{
checkDomain(rule, value, callback){
//⾃定义校验规则
},
submitForm(formName){
this.$refs[formName].validate((valid)=>{
if(valid){
alert('submit!');
}el{
console.log('error submit!!');
}
});
}
}
}
</script>
2. 综合应⽤
案例中, Element-ui 表单⾥嵌套了表格,表格内每个单元格都能进⾏表单控件的输⼊、选择、上传⽂件等操作,同时能针对整个表单的规则进⾏校验。
<template>
<div>
<el-button type="primary" size="mini" @click="saveTableForm('tableForm')">保存</el-button> <el-form
:model="tableForm"
ref="tableForm">
<el-table
:data="tableForm.tableData"
border
stripe>
<el-table-column label="省份" prop="province"></el-table-column>
<el-table-column label="城市">
<template slot-scope="scope">
<el-form-item
label=" "
label-width="12px"
:prop="'tableData.' + scope.$index + '.city'"
:rules="tableDataRules.city">
<el-lect size="mini" v-model="w.city" placeholder="请选择" clearable>
<el-option
v-for="item w.cityOPtions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-lect>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="操作⼈">
<template slot-scope="scope">
<el-form-item
label=" "
label-width="12px"
:prop="'tableData.' + scope.$index + '.name'"
:rules="tableDataRules.name">
<el-input v-model="w.name" placeholder="操作⼈"/>
</el-form-item>
</template>

本文发布于:2023-05-12 10:22:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/105581.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:校验   表单   年龄   不能   渲染
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图