Vue3中如何点击外部button进行van-form表单验证

Vue3中如何点击外部button进行表单验证

1. html页面

1.1 代码

<van-form ref="editRef">
  <van-field
     v-model="dataForm.scaleNo"
     name="scaleNo"
     label="秤的编号"
     placeholder="请选择秤"
     readonly
     :rules="scaleRules"
     @click="chooseImmune(0)"
   >
     <template #right-icon>
       <svg class="icon" aria-hidden="true">
         <use xlink:href="#icon-xiangyou14"></use>
       </svg>
     </template>
   </van-field>
   <van-field
     v-model="dataForm.number"
     type="number"
     label="饲养数量"
     placeholder="请输入种群数量"
     :rules="numberRules"
   />
   <van-field name="sex" label="种群性别">
     <template #input>
       <van-radio-group v-model="dataForm.sex" style="display: flex">
         <van-radio name="1">混群</van-radio>
         <van-radio name="2">公群</van-radio>
         <van-radio name="3">母群</van-radio>
       </van-radio-group>
     </template>
   </van-field>
 </van-form>
 <div class="btn-wrap">
        <van-button type="primary" block round @click="handleSubmit">提交</van-button>
</div>

1.2 注意项

  1. 这里的ref(editRef)一定不能和表单数据(dataForm)一致,如果相同会出现输入框失焦数据丢失以及radio单选框不显示的问题
  2. rules需要单独定义规则名称,如果直接写成:rules="[required:true,message:'12121']"可能会出现错误提示includes[name] is not a function
  3. vue3中button已经有了点击事件就不需要再设置@submit="onSubmit"

2. JS部分核心代码

const shedRules = [{ required: true, message: "请选择所属舍号", trigger: "onChange" }];
const scaleRules = [{ required: true, message: "请选择秤编号", trigger: "onChange" }];
const numberRules = [{ required: true, message: "请输入饲养数量", trigger: "onBlur" }];
// 表单
const dataForm = ref<IScaleSaveParam>({
  orgName: "",
  farmer: "",
  groupNo: "",
  bizDate: "",
  scaleNo: "",
  shedNo: "",
  number: undefined,
  sex: "1",
});
const scaleList = ref<IScaleItemInfoList[]>();
const shedList = ref<IShedItemInfoList[]>();
const editRef = ref()


//表单提交
const handleSubmit = () => {
  console.log(dataForm.value);
  editRef.value
    ?.validate()
    .then(() => {
      console.log("验证成功");
    })
    .catch(() => {
      console.log(2222);
    });
};
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

trabecula_hj

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

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

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

打赏作者

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

抵扣说明:

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

余额充值