当前位置: 首页 > news >正文

vue3+vant4父组件点击提交并校验子组件form表单

先看效果

代码如下

父组件

<template><ChildForm ref="childFormRef" /><button @click="validateForm">校验表单</button>
</template>
<script setup>
import { ref } from 'vue';
import ChildForm from './ChildForm.vue';
const childFormRef = ref(null);
const validateForm = async () => {if (childFormRef.value) {try {const isValid = await childFormRef.value.validate();console.log('Form valid:', isValid);} catch (error) {console.error('Validation error:', error);}}
};
</script>

子组件

<!-- ChildForm.vue -->
<template><van-form ref="formRef"><!-- 表单项 --><van-field label="账号" name="账号" v-model="pageList.fieldValue" :rules="rules" /><van-fieldv-model="pageList.password"label="密码"name="密码"type="password"placeholder="请输入密码":rules="[{ required: true, message: '请输入密码' }]"/></van-form></template><script setup>import { ref, defineExpose } from 'vue';const formRef = ref(null);let pageList = ref({fieldValue:'',password:'',})const rules = ref([{ required: true, message: 'This field is required' }]);const validate = async () => {if (formRef.value) {try {await formRef.value.validate();return true;} catch (error) {return false;}}return false;};defineExpose({ validate });</script>

父组件通过ref获取子组件的引用,在父组件的点击事件中调用子组件的validate方法进行表单验证,如果验证通过则执行提交逻辑。子组件通过defineExpose暴露其validate方法给父组件使用。这样父组件就可以通过childForm.value.validate调用子组件的验证方法了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【区块链 + 司法存证】优证云:基于 FISCO BCOS 的存证平台 | FISCO BCOS应用案例
  • 【Python自动化办公】复制Excel数据:将各行分别重复指定次数
  • c++多线程下崩溃一例分析 ACTIONABLE_HEAP_CORRUPTION heap failure block not busy DOUBLE
  • 如何优化Oracle数据库的性能?
  • 多目标应用:基于自组织分群的多目标粒子群优化算法(SS-MOPSO)的移动机器人路径规划研究(提供MATLAB代码)
  • 计算机基础知识总结(八股文--计算机网络、操作系统、数据库、c++、数据结构与算法)
  • python web 框架 Tornado
  • GitHub项目评论被用来传播Lumma Stealer恶意软件
  • 【Linux】命令简介------迅速掌握Linux命令
  • html+css+js网页设计 文化历史 中华历史10个页面
  • ParallelsDesktop19可在任何Mac上运行Windows软件
  • python可视化-直方图
  • 解决Vscode Copilot连不上网问题
  • DWG如何转换成PDF?总结了四种转换
  • RocketMQ 实战:在 macOS 上安装与前端访问全流程指南
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • java小心机(3)| 浅析finalize()
  • maven工程打包jar以及java jar命令的classpath使用
  • MySQL QA
  • Spring Boot MyBatis配置多种数据库
  • 高度不固定时垂直居中
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 经典排序算法及其 Java 实现
  • 开发基于以太坊智能合约的DApp
  • 线上 python http server profile 实践
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (Git) gitignore基础使用
  • (Qt) 默认QtWidget应用包含什么?
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (每日一问)基础知识:堆与栈的区别
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (转)C#调用WebService 基础
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 8.0 发布到 IIS
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET开源项目介绍及资源推荐:数据持久层
  • .ui文件相关
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [7] CUDA之常量内存与纹理内存
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [codeforces]Checkpoints
  • [codevs 1296] 营业额统计
  • [emuch.net]MatrixComputations(7-12)