Vue3和ElementPlus实现表单校验、字段的显示/隐藏

背景

填写表单时,有些字段必填,需要加表单规则并校验。业务需求需要呈现随着下拉字段切换时,动态显示不同的字段,需要表单字段的显示和隐藏 功能。

实现方式

  • el-form:rules:绑定表单规则
  • el-form-itemprop:绑定表单每一项的key,必须绑定prop,校验才能生效
  • el-form-item上加v-show:动态控制某项的显示和隐藏。
    • 如果使用v-if,会出现初次进页面一片空白,没有字段可以显示出来的问题。
    • 如下在表单项的具体内容上使用v-if会出现,虽然内容给不显示了,但是表单左侧lable还在,且这一项还占着空格,很难看!
<el-form-item>
	<el-input v-model="value" v-if="isShow">
</el-form-item>

  • 自带表单校验函数validateel-form上绑定ref调用
  • el-formvalidate-on-rule-change:是否在rules属性改变后立即触发一次验证。如果有多个表单来回切换打开,当第二个表单打开的时候,rules发生了变化,默认自动触发,页面会先报红。

  1. template实现:
<el-form :model="fieldDialogForm":rules="formRules" ref="fieldDialogFormRef" 
:validate-on-rule-change="false">
  	//isShow标识该字段是否显示,动态切换isShow的值,控制其显示/隐藏
      <el-form-item v-for="(fieldKey, index) in Object.keys(fieldDialogForm)" 
      :key="index" label-width="100" 
      :prop="fieldKey" 
      v-show="fieldsShowFlag.find(item => item.key === fieldKey)?.isShow"> 
      </el-form-item>a
</el-form>
  1. fieldDialogForm:表单key-value初始化
    • 作用:实现填写表单key和value的动态绑定。
let fieldDialogForm = reactive({})
//初始话字段
Object.assign(fieldDialogForm, {
      key: '',
      name: '',
      description: ''
    })
  1. fieldsShowFlag:定义表单所有字段,
    • 作用:对表单字段key映射的中文名、类型、是否必填、表单提示词、是否显示等属性的定义。
[
    {
        key: 'key',
        value: '字段名',
        type: 'STRING',
        isRequired: true,
        tip: '请输入出参名称,区分大小写',
        isShow: true
    },
    {
        key: 'description',
        value: '描述',
        type: 'STRING',
        isRequired: false,
        tip: '请输入描述',
        isShow: false
    },
    ......
]
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 Element Plus是一套基于Vue3的UI组件库提供了丰富的组件和功能,其中包括了Form表单组件。在Element Plus中,可以通过动态校验实现同一字段表单动态校验。 在Vue3 Element Plus中,可以使用`el-form`组件来创建表单,通过`el-form-item`组件来包裹表单项。要实现同一字段表单动态校验,可以使用`rules`属性来定义校验规则。 首先,需要在Vue组件中定义表单数据和校验规则。例如: ```javascript data() { return { form: { field1: '', field2: '' }, rules: { field1: [ { required: true, message: '字段1不能为空', trigger: 'blur' }, // 其他校验规则 ], field2: [ { required: true, message: '字段2不能为空', trigger: 'blur' }, // 其他校验规则 ] } } } ``` 然后,在模板中使用`el-form`和`el-form-item`组件来创建表单,并绑定数据和校验规则。例如: ```html <template> <el-form :model="form" :rules="rules" ref="form"> <el-form-item label="字段1" prop="field1"> <el-input v-model="form.field1"></el-input> </el-form-item> <el-form-item label="字段2" prop="field2"> <el-input v-model="form.field2"></el-input> </el-form-item> </el-form> </template> ``` 最后,可以通过调用`validate`方法来触发表单校验。例如: ```javascript methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 校验通过,提交表单 } else { // 校验不通过,处理错误信息 } }); } } ``` 这样,就可以实现同一字段表单动态校验了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值