uni-app中vue3表单校验失败

目录

1.问题

2.原因及解决方式

3.表单校验方式(vue3)


1.问题

在app中使用uni-forms表单,并添加校验规则,问题是即使输入内容,表单校验依然失败。

代码:

<template>
	<view>
		<uni-forms ref="seedForm" :model="formData" :rules="rules" label-position="top">
			<uni-forms-item label="姓名" name="name">
				<input type="text" v-model="formData.name" placeholder="请输入姓名" />
			</uni-forms-item>
			<uni-forms-item label="邮箱" name="email">
				<input class="input" v-model="formData.email" type="text" placeholder="请输入邮箱" />
			</uni-forms-item>
		</uni-forms>
		<button @click="submit">Submit</button>
	</view>
</template>

<script lang="ts" setup>
	import { onReady } from "@dcloudio/uni-app";
	import { ref } from "vue";
	const seedForm = ref();
	const resetForm = () => {
		return {
			name: '',
			email: ''
		}
	};
	let formData = resetForm();
	const rules = {
		// 对name字段进行必填验证
		name: {
			rules: [{
				required: true,
				errorMessage: '请输入姓名'
			},
			{
				minLength: 3,
				maxLength: 5,
				errorMessage: '姓名长度在 {minLength} 到 {maxLength} 个字符'
			}],
		},
		// 对email字段进行必填验证
		email: {
			rules: [{
				required: true,
				errorMessage: '请输入邮箱'
			}],
		}
	};
	onReady(() => {
		seedForm.value.setRules(rules);
	})
	const submit = async () => {
		console.log(formData.value);
        // 1.
		// try { 
		// 	await seedForm.value?.validate?.()
		// 	console.log("校验通过");
		// } catch (error){
		// 	console.log("校验失败");
		// }

        // 2.
		seedForm.value.validate().then(async ({ valid } : any) => {
			if (valid) {
				console.log("校验失败");
			} else {
				//验证成功
				console.log("校验成功");
			}
		});

        // 3.
		// seedForm.value.validate(valid => {
		// 	if (!valid) {
		// 		console.log("校验成功");
		// 	} else {
		// 		console.log('验证失败');
		// 		console.log(valid);
		// 	}
		// });

        // 4.
		// seedForm.value.validate().then(res => {
		// 	console.log('表单数据信息:', res);
		// 	// 清除验证
		// 	// form.value.clearValidate()
		// }).catch(err => {
		// 	console.log('表单错误信息:', err);
		// })
	}
</script>

<style>

</style>

2.原因及解决方式

表单绑定的数据不正确,外面需要套一层ref,声明响应式数据绑定到表单中。之前的那个写法确实不报错,但是不能把表单中输入的数据更新到formData中,导致校验一直报错。

修改前:	
let formData = resetForm();
修改后:
let formData = ref(resetForm());

3.表单校验方式(vue3)

定义校验规则-》修改表单结构-》绑定表单数据-》提交时校验

表单规则中各个项目的id要和表单中form-item中的name属性一致。

在vue中表单数据通过ref方式进行定义。

表单中需要追加rule,ref及model,分别定义校验规则,表单及表单绑定的数据

提交表单时校验方式有好几种。主要是先定义表单实例,通过表单实例中的value的validate判断校验是成功还是失败。

我上面的代码中一共有4中校验方式。第二种前端会报错,可以参照下其他几种方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/223549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

案例052:用于日语词汇学习的微信小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Nginx跨域配置

一 跨域概述 1.1 同源策略 同源策略是一个安全策略。同源&#xff0c;指的是协议&#xff0c;域名&#xff0c;端口相同。浏览器处于安全方面的考虑&#xff0c;只允许本域名下的接口交互&#xff0c;不同源的客户端脚本&#xff0c;在没有明确授权的情况下&#xff0c;不能读…

【SVM】不同数据划分方式导致结果不同...

此帖是一个自我纠查帖&#xff0c;感觉基本不会有其他人踩相同的坑。 背景&#xff1a;在MI分类中使用FBCSPSVM&#xff0c;基于这个方法写了两个分类的.py文件实现&#xff0c;在数据划分上大差不差&#xff08;都是CV5&#xff09;&#xff0c;但是结果却相差很多 方法一&a…

自定义数组,循环展示对象数据,vue3监视数组

HTML <div v-for"(item, index) in dataList" :key"index"> <span>{{ item.title }}:</span> <span>{{ dataInfo[item.content] }}</span> </div> JS 需要展示的键值对放入数组中 let dataList [ { title: data1, co…

慎用!3个容易被打的Python恶搞脚本

Python 无限恶搞朋友电脑&#xff0c;别提有多爽了&#xff0c;哈哈&#xff0c;打造自己的壁纸修改器&#xff0c;电脑无限锁屏&#xff0c; 无线弹窗&#xff0c;都在这里&#xff01;&#xff01;&#xff01; 1、修改电脑桌面壁纸 工具使用 开发环境&#xff1a;python3…

Python替代Adobe从PDF提取数据

大家好&#xff0c;PDF文件是官方报告、发票和数据表的通用格式&#xff0c;然而从PDF文件中提取表格数据是一项挑战。尽管Adobe Acrobat等工具提供了解决方案&#xff0c;但它们并不总是易于获取或可自动化运行&#xff0c;而Python则是编程语言中的瑞士军刀。本文将探讨如何利…

有线传输介质

目录 1、双绞线 &#xff08;1&#xff09;无屏蔽双绞线 UTP(Unshielded Twisted Pair) &#xff08;2&#xff09;屏蔽双绞线 STP (Shielded Twisted Pair) &#xff08;3&#xff09;布线标准EIA/TIA-568-&#xff21; &#xff08;4&#xff09;双绞线的特点 2、同轴电…

Java异常讲解

&#x1f435;本篇文章将对异常相关知识进行讲解 一、异常的结构 在程序执行的过程中出现的一些问题叫做异常&#xff0c;异常其实是一个一个类&#xff0c;每一种异常都代表一个类 1.1 几种常见的异常 System.out.println(10/0); //算数异常 //Exception in thread "m…

从零开始学习 JavaScript APl(七):实例解析关于京东案例头部案例和放大镜效果!

大家好关于JS APl 知识点已经全部总结了&#xff0c;第七部部分全部都是案例部分呢&#xff01;&#xff01;&#xff08;素材的可以去百度网盘去下载&#xff01;&#xff01;&#xff01;&#xff09; 目录 前言 一、个人实战文档 放大镜效果 思路分析&#xff1a; 关于其它…

西工大计算机学院计算机系统基础实验一(函数编写11~14)

稳住心态不要慌&#xff0c;如果考试周冲突的话&#xff0c;可以直接复制这篇博客和上一篇博客西工大计算机学院计算机系统基础实验一&#xff08;函数编写1~10&#xff09;-CSDN博客最后的代码&#xff0c;然后直接提交&#xff0c;等熬过考试周之后回过头再慢慢做也可以。 第…

androidstudio设置内存

androidstudio一直 scanning files to index&#xff0c;需要去设置内存&#xff1a; 操作如下&#xff1a;

基于单片机自动饮料混合机控制系统设计

**单片机设计介绍&#xff0c;基于单片机自动饮料混合机控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机自动饮料混合机控制系统设计是一个涉及多个领域的复杂项目&#xff0c;包括单片机技术、传感器技术…

C语言--每日练习题--Day38

第一题 1. 下列代码的运行结果&#xff08;&#xff09; short i 65537; int j i 1; printf("i%d,j%d\n", i, j); A&#xff1a;i 65537&#xff0c;j 65538 B&#xff1a;i 1&#xff0c;j 2 C&#xff1a;i -1&#xff0c;j 0 D&#xff1a;i 1&#xff…

免费好用的5个AI写作工具,如何更好的使用AI写作工具

人工智能&#xff08;AI&#xff09;作为当今科技领域的热门话题&#xff0c;正在以惊人的速度改变我们生活的方方面面。从智能助手到自动驾驶汽车&#xff0c;AI的应用已经渗透到我们日常的方方面面。 1. 什么是AI人工智能&#xff1f; 什么是AI人工智能&#xff1f;简而言之…

【源码解析】聊聊阻塞队列之BlockingArrayQueue

阻塞队列 阻塞队列&#xff1a;顾名思义 首先它是一个队列&#xff0c;而一个阻塞队列在数据结构中所起的作用大致如下入所示。 当阻塞队列是空时&#xff0c;从队列中获取元素的操作将会被阻塞。当阻塞队列时满的时&#xff0c;往队列里添加元素的操作将会被阻塞。 试图从空的…

湖南麒麟下默认使用串口输出系统日志

有时候为了调试方便&#xff0c;需要将系统日志通过CPU的串口进行输出&#xff0c;以下是针对至强E5V4处理器上安装湖南麒麟操作系统后将日志通过串口输出的配置。 首先在bios中打开串口重定向功能&#xff0c;这里的BIOS是AMI的BIOS 内部配置如下&#xff0c;波特率115200配置…

Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

校园教务管理系统

学年论文&#xff08;课程设计&#xff09; 题目&#xff1a; 信息管理系统 校园教务管理系统 摘要&#xff1a;数据库技术是现代信息科学与技术的重要组成部分&#xff0c;是计算机数据处理与信息管理系统的核心&#xff0c;随着计算机技术的发展&#xff0c;数据库技…

Android的前台服务

概述 前台服务是用户主动意识到的一种服务&#xff0c;因此在内存不足时&#xff0c;系统也不会考虑将其终止。前台服务必须为状态栏提供通知&#xff0c;将其放在运行中的标题下方。这意味着除非将服务停止或从前台移除&#xff0c;否则不能清除该通知。 在 Android 8.0&…

【使用高德开放平台API和js的Ajax代码实现定位并获得城市的天气情况】

使用高德开放平台API和js的Ajax代码实现定位并获得城市的天气情况 1、注册高德开放平台账号&#xff0c;免费获得Web服务API应用key 高德开放平台Web服务API 按照API点击申请KEY 登录后进入应用管理 新建应用&#xff08;随意起名&#xff09; 然后添加key提交即可 然后就可…