vue+element表单内容选填和必填

Vue表单内容选填,若填写,则必须按照既定的格式

  1. 动态绑定rules,若dataForm.mobile为空,则不必填,反之,必填且遵循填写规则
<el-form-item label="手机号" prop="mobile" :rules="dataForm.mobile? dataRule.mobile:[{required: false}]">
 	<el-input v-model="dataForm.mobile" placeholder="请输入11位手机号" ></el-input>
</el-form-item>

<el-form-item label="身份证号" prop="identity" :rules="dataForm.identity? dataRule.identity:[{required: false}]">
    <el-input v-model="dataForm.identity" placeholder="身份证号"></el-input>
</el-form-item>
  1. dataForm.mobile等相关数据
data () {
    return {
      visible: false,
      dataForm: {
        id: '',
        name: '',
        mobile:'',
        identity: '',
        },
    }
}
  1. 对数据格式的限制
  computed: {
    dataRule () {
      return {
        name: [
          { required: true, message: this.$t('validate.required'), trigger: 'blur' }
        ],
        mobile: [
            { required: true, message: "请输入手机号码", trigger: "change" },
          {
            validator: (rule, value, callback) => {
              if (value.trim() === '') {
                // callback(new Error('请输入手机号码'))
              } else if (!(/^1[3456789]\d{9}$/.test(value))) {
                callback(new Error('您输入手机号码不正确'))
              } else {
                  callback()
                }
            },
              trigger: 'change'
          }
        ],
        identity: [
          { required: true, message: "请输入身份证号", trigger: "change" },
          {
            validator: (rule, value, callback) => {
              if (value.trim() === '') {
                // callback(new Error('请输入手机号码'))
              } else if (!(/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/.test(value))) {
                callback(new Error('您输入身份证号不正确'))
              } else {
                callback()
              }
            },
            trigger: 'change'
          }
        ]
      }
    }
  }
  1. 若设置表单必填,把表单标签内的绑定rules的内容删去即可

效果如图:

img

img

img

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Element的动态表单是一种可以动态设置表单项并渲染出来的表单组件。通常情况下,我们需要使用Vue Element的el-form和el-form-item构建表单,但是使用动态表单可以快速简便地创建表单。它不仅减少了代码的重复,还可以根据不同的需求灵活地增加和删除表单项。 首先,我们需要定义一个数组来存储表单项。数组中的每一个项都是一个对象,对象包含了表单项的各种属性,如类型,名称,placeholder等。在组件中,我们需要对这个数组进行遍历,并根据每一个对象的属性来动态地渲染出表单项。 其次,我们需要使用Vue Element的组件绑定来动态地设置表单项的属性,比如v-model可以用来绑定表单项的值,v-if可以用来控制表单项的显隐性,v-for可以用来循环遍历表单项。 在表单项的定义过程中,我们可以使用计算属性来对表单项的属性进行动态计算,从而实现表单项的复杂计算和逻辑处理。 最后,我们需要添加一个动态增加表单项的方法或组件。通常情况下,我们可以添加一个按钮或者下拉选择框,在用户进行相应的操作后,根据选择或者用户输入的数据来动态地增加表单项。 总的来说,Vue Element的动态表单可以根据不同的需求快速地创建表单,并且可以灵活地增加和删除表单项。使用动态表单可以大大减少代码的重复,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值