vant动态函数校验

业务场景:

因为公司做的事海外业务,所以验证手机号码,要根据区号来验证,所以用到vantUI的validator来验证


使用:

      <div class="flex">
        <label>公司電話</label>
        <div>
          <div class="select-flex">
            <el-select
              @change="getHouseNumber"
              placeholder="請選擇"
              class="select-phone"
              v-model="datas.office_Coun_code"
            >
              <el-option
                v-for="item in areaCode"
                :key="item.areaCode"
                :value="item.areaCode"
                type="number"
                :label="item.areaCode"
              >
              </el-option>
            </el-select>
            <van-field
              type="number"
              :rules="[
                {
                  
                  validator: validateHouseNumber,
                  message: houseNumberMessage,
                },
              ]"
              v-model="datas.office_tel"
              class="field-phoneNumber"
            />
          </div>
        </div>
      </div>

 methods中的方法

 

    validateHouseNumber(value, rule) {
      if (value) {
        // return true;
        if (this.datas.selectHouseNumber === "+852") {
          return /^\d{8}$/.test(value);
        } else if (this.datas.selectHouseNumber === "+853") {
          return /^\d{8}$/.test(value);
        } else if (this.datas.selectHouseNumber === "+86") {
          return /^\d{11}$/.test(value);
        }
      }
      return true;
    },

补充:动态文本我是写在@chang()方法里面

     /**
     * 家庭电话正则
     */
    getHouseNumber() {
      if (this.datas.office_Coun_code === "+852") {
        this.houseNumberPattern = /^\d{8}$/;
        this.houseNumberMessage = "Please enter 8 valid home phone numbers";
      } else if (this.datas.office_Coun_code === "+853") {
        this.houseNumberPattern = /^\d{8}$/;
        this.houseNumberMessage = "Please enter 8 valid home phone numbers";
      } else if (this.datas.office_Coun_code === "+86") {
        this.houseNumberPattern = /^\d{11}$/;
        this.houseNumberMessage = "Please enter 11 valid home phone numbers";
      }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是动态生成vant表单以及校验的实现方法: 1. 引入vant组件库和表单校验插件`vee-validate`。 ```javascript import Vue from 'vue' import VeeValidate from 'vee-validate' import { Form, Field, Button } from 'vant' Vue.use(Form) Vue.use(Field) Vue.use(Button) Vue.use(VeeValidate, { inject: false }) ``` 2. 在组件中定义表单数据和校验规则。 ```javascript export default { data() { return { form: { name: '', age: '', email: '', phone: '' }, rules: { name: [ { required: true, message: '姓名不能为空' }, { min: 2, max: 5, message: '姓名长度为2-5个字符' } ], age: [ { required: true, message: '年龄不能为空' }, { type: 'integer', message: '年龄必须为整数' }, { min: 18, max: 60, message: '年龄在18-60之间' } ], email: [ { required: true, message: '邮箱不能为空' }, { type: 'email', message: '邮箱格式不正确' } ], phone: [ { required: true, message: '手机号不能为空' }, { pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确' } ] } } } } ``` 3. 在模板中动态生成表单。 ```html <van-form :model="form" :rules="rules" ref="form"> <van-field v-model="form.name" name="name" label="姓名" placeholder="请输入姓名"></van-field> <van-field v-model="form.age" name="age" label="年龄" placeholder="请输入年龄"></van-field> <van-field v-model="form.email" name="email" label="邮箱" placeholder="请输入邮箱"></van-field> <van-field v-model="form.phone" name="phone" label="手机号" placeholder="请输入手机号"></van-field> <van-button type="primary" @click="handleSubmit">提交</van-button> </van-form> ``` 4. 在方法中定义表单提交处理函数,并进行表单校验。 ```javascript export default { methods: { handleSubmit() { this.$refs.form.validate((valid) => { if (valid) { // 表单校验通过,提交表单 console.log(this.form) } else { // 表单校验不通过,提示错误信息 Toast('请正确填写表单信息') } }) } } } ``` 这样就实现了动态生成vant表单以及校验

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iam_楠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值