Vue:动态表单标签/校验提示

场景介绍

对于表单项,存在前一个表单项填写控制后一个表单项展示问题。即动态表单项展示。

处理思路

  1. 定义表单项变量::label="nameLabel"
<Form ref="form" :model="formModel" :rules="formRulesList" label-width="100px" size="mini">
  <FormItem label="家长" required prop="isFather">
	<Select v-model="formModel.isFather" clearable @change="changeFamilyType">
	  <Option
		v-for="(dataType, index) in familyList"
		:key="index"
		:label="dataType.type"
		:value="dataType.isFather"
	  />
	</Select>
  </FormItem>
  <FormItem :label="nameLabel" required prop="nameId" v-if="isVisible">
	<Select v-model="formModel.nameId" clearable>
	  <Option
		v-for="(topic, index) in nameList"
		:key="index"
		:label="topic.name"
		:value="topic.id"
	  />
	</Select>
  </FormItem>
</Form>
  1. 表单项变量校验提示:computed 处理"
<script>
export default {
  data() {
    return {
      isVisible: false,
      nameLabel: "",
	  familyList: [],
	  nameList: [],
      formModel: {
        nameId: ""
      },
	  formRules: {
        nameId: [
          {
            required: true,
            message: "请选择父亲名字",
            trigger: ["blur", "change"]
          }
        ]
      }
    }
  },
  methods: {
    changeFamilyType() {
	  this.isVisible = true
	  this.nameLabel = this.formModel.isFather === '0' ? "父亲名字": "母亲名字"
	  ...
	}
  },
  computed: {
    formRulesList(){
      let formRules_ = this.formRules
      if(this.formModel.isFather === '0'){
        formRules_.nameId[0].message = "请选择父亲名字"
      } else {
        formRules_.nameId[0].message = "请选择母亲名字"
      }
      return formRules_
    }
  }
}
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值