// *****注意这里的值是 name 不再是 porp****// 搜索查看编辑修改首页UNITYNODEJSPYTHONAIGITPHPGOCEF3JAVAHTMLCSS搜索煮酒与君饮 这个屌丝很懒,什么也没留下! 关注作者热门标签jqueryHTMLCSSPHPASPPYTHONGOAICC++C#PHOTOSHOPUNITYiOSandroidvuexml爬虫SEOLINUXWINDOWSJAVAMFCCEF3CADNODEJSGITPyppeteerarticle热门文章1foxit reader_如何使用Acrobat,Adobe Reader和Foxit Reader在PDF文件上打印注释2基于android的鲜花商城App【可微信小程序与android studio运行】_鲜花销售系统android studio3在笔记本电脑上本地运行大型语言模型 (LLM) 的 5 个免费工具(GPT4All LM Studio Ollama LLa MA.cpp NV) 解锁自定义 AI:在本地运行大型模型以实现控制和隐私_gpt4all llmstudio olama4(19-2)操作国产大模型:LangChain与百度千帆大模型实践_qianfanllmendpoint5java xxe漏洞利用_JAVA的XXE漏洞6抓娃小兵的Java开发记录_133000033337java图片文字识别tesseract-ocr_java 网络图片tesseract.doocr8ddos python ntp脚本_python写一个DDos脚本(DOS)9mysql 函数 截取_mysql函数之截取字符串10Elasticsearch使用场景 有哪些?当前位置: article > 正文 vue3 rules 验证框架的简单入门用法,快速上手 作者:煮酒与君饮 | 2024-07-11 06:47:12 赞踩vue3 rules 1. ant-design-vue rules <template>// 定义 a-form 表单 添加 动态属性 :model 表单值属性 ,: rulse 表单验证属性 <a-form ref="formRef" name="custom-validation" :model="formState" :rules="rules" > // *****注意这里的值是 name 不再是 porp****// <a-form-item label="Password" name="pass"> <a-input v-model:value="formState.pass" type="password" /> </a-form-item> <a-form-item label="Confirm" name="checkPass"> <a-input v-model:value="formState.checkPass" type="password" /> </a-form-item> <a-form-item label="Age" name="age"> <a-input-number v-model:value="formState.age" /> </a-form-item> <a-form-item :wrapper-col="{ span: 14, offset: 4 }"> <a-button type="primary" html-type="submit">Submit</a-button> </a-form-item> </a-form></template><script lang="ts">import type { Rule } from 'ant-design-vue/es/form';import { defineComponent, reactive } from 'vue';// 定义表单数据类型接口interface FormState { pass: string; checkPass: string; age: number | undefined;}export default defineComponent({ setup() { // reactive定义 表单双向数据绑定 const formState = reactive<FormState>({ pass: '', checkPass: '', age: undefined, }); // 自定义 表单验字段证方法 let checkAge = (_rule: Rule, value: number) => { if (!value) { return Promise.reject('Please input the age'); } setTimeout(() => { if (!Number.isInteger(value)) { return Promise.reject('Please input digits'); } else { if (value < 18) { return Promise.reject('Age must be greater than 18'); } else { return Promise.resolve(); } },1000} }; let validatePass = (_rule: Rule, value: string) => { if (value === '') { return Promise.reject('Please input the password'); } else { if (formState.checkPass !== '') { } return Promise.resolve(); } }; let validatePass2 = (_rule: Rule, value: string) => { if (value === '') { return Promise.reject('Please input the password again'); } else if (value !== formState.pass) { return Promise.reject("Two inputs don't match!"); } else { return Promise.resolve(); } }; // 定义 rules 验证属性 这里Record<string, Rule[]> 是定义rules 数据类型为key value 链表数据,其中value 数据类型为Rule[] const rules: Record<string, Rule[]> = { pass: [{ required: true, validator: validatePass, trigger: 'change' }], checkPass: [{ validator: validatePass2, trigger: 'change' }], age: [{ validator: checkAge, trigger: 'change' }], }; return { formState, rules }; },});</script> 2. element-plus rules <template>// 定义 el-form 定义 表单数据model,如果不定义这个 rules 是获取不到 验证字段的值的,定义rules 属性 <el-form size="large" class="login-content-form" :model="ruleForm" :rules="rules" > // 注意这里的 form-item 属性是prop 与 ant 做区分 <el-form-item class="login-animation1" prop="userName" > <el-input type="text" placeholder="账户" v-model="ruleForm.userName"> </el-input> </el-form-item> <el-form-item class="login-animation2" prop="password"> <el-input placeholder="密码" v-model="ruleForm.password" > </el-input> </el-form-item> <el-form-item class="login-animation3" prop="code"> <el-col :span="15"> <el-input type="text" maxlength="5" placeholder="验证码" v-model="ruleForm.code" > </el-input> </el-col> <el-col :span="1"></el-col> <el-col :span="8"> <el-button class="login-content-code"> <el-image style="width: 100px; " /> </el-button> </el-col> </el-form-item> <el-form-item class="login-animation4"> <el-button type="primary" class="login-content-submit" > <span>{{ "登录"}}</span> </el-button> </el-form-item> </el-form></template> <script lang="ts">import { reactive, defineComponent} from 'vue';export default defineComponent({ name: 'loginAccount', setup() { const ruleForm = reactive({ userName: '', password: '', code: '', }) // 验证验证码 const checkCode=(rule: any, value: any, callback: any) => { console.log(value,"value") } // 自定义表单验证 const rules = reactive({ userName: [ { required: true, message: '请输入账号', trigger: 'blur' }, { min: 3, max: 5, message: '账号长度 在 3 到 5长度之间', trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 3, max: 5, message: '密码长度 在 3 到 5长度之间', trigger: 'blur' }, ], code: [ { required: true, message: '请输入验证码', trigger: 'blur' }, { validator: checkCode, trigger: 'change' }, ], }) return { rules, ruleForm }; },});</script> 注意:自定义验证表单方法时候不用使用 异步操作 async 否则会导致验证信息message 赋值(错误提示信息不显示) 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/809071?site推荐阅读article9.(vue3.x+vite)修改el-input,el-data-picker样式...9.(vue3.x+vite)修改el-input,el-data-picker样式9.(vue3.x+vite)修改e... 赞踩articleVue3+Element-plus的表单重置_vue3 elementplus表单里的重置怎么写...1.创建表单,绑定表单数据对象model,并且每一表单需要绑定prop。作用:简化代码,重置表单数据。_vue3 ele... 赞踩articleFastAPI+vue3+ollama+Langchain大模型开发实战教程_fastapi + v...下载:https://ollama.com/download/OllamaSetup.exe。_fastapi + vu... 赞踩articleuniApp+Vue3+Vite微信小程序开发指南_uniapp vite vue3...App.vue是uni-app的主组件,所有页面都是在App.vue下进行切换的,是页面入口文件。微信开发者工具:htt... 赞踩articleVue3 对于内嵌Iframe组件进行缓存...对于系统内所有内嵌iframe 的页面均通过同一个路由'/iframe', 在router.query内传入不同src ... 赞踩articlevue3 自动下载使用 iconify图标以及自定义svg图标_vue3中的favicon下载...自定义图标只要下载svg 文件到 assets/icons 文件夹下,自定义图标 通过icon-图标名称访问,iconi... 赞踩articleIconify 离线_iconify vue3 离线...使用本地 Iconify 图标_iconify vue3 离线iconify vue3 离线 ... 赞踩articleuniapp Vue3 setup 报错 [plugin:commonjs] Expected ‘,...可以看到上面有个变量 taskList,结果和 components 中的 task-list 组件冲突了,给我找了老半... 赞踩articleSpringBoot+VUE3前后端分离-【支付宝支付】_springboot vue3 支付宝沙箱...打开支付宝沙箱能够看到如下信息:获取到appid;_springboot vue3 支付宝沙箱springboot vu... 赞踩articlevue3.0(十六)axios详解以及完整封装方法_axios 配置...axios详解以及完整封装方法_axios 配置axios 配置 ... 赞踩articlevue3:vue-router路由的使用_vue3 router...目前前端流行的三大框架, 都有自己的路由实现: Angular的ngRouter React的ReactRouter V... 赞踩articleVUE3 路由学习(一)...VUE3 路由学习日记(一)_vue3 路由vue3 路由 一、基础入门 1.1入门 &... 赞踩articleVue3 路由配置 + 路由跳转 + 路由传参(动态路由传参 + 普通路由传参)_vue3 路由跳转...介绍 | Vue RouterVue.js 的官方路由。_vue3 路由跳转vue3 路由跳转 ... 赞踩articleVue3 使用路由 Router_vue3 router...众所周知,vue 是用来构建单页面应用的前端框架,大于大多数此类型应用来讲,都推荐使用官方支持的 vue Router,... 赞踩article【vue3 路由使用与讲解】vue-router : 简洁直观的全面介绍_vue3路由跳转...本文详细介绍了VueRouter的声明式和编程式路由操作,包括动态路由、参数传递、路由重定向、命名视图、路由守卫以及动态... 赞踩articlevue3 路由模式_vue3路由模式...vue3路由模式_vue3路由模式vue3路由模式 History模式 import {... 赞踩articlevue3 路由的用法_vue3 路由模式...import {import {history: createWebHashHistory(),//1定义路由模式//2... 赞踩article【Vue3】什么是路由?Vue中的路由基本切换~_vue3 路由模式...网络的角度:网络中的路由:在网络中,路由是指确定数据包从源到目的地的路径的过程。路由器是负责执行这一过程的设备,它们根据... 赞踩articleVue3-路由详解_vue 3 路由...让路由组件更方便的收到参数(可以将路由参数作为。优点:兼容性更好,因为不需要服务器端处理路径。作用:可以简化路由跳转及传... 赞踩articlevue3+elementplus+el-upload,文件上传,带参数传递到后台,亲测有用_vue上...网上查阅了很多资料,结果都不尽人意,废话不多说,直接上代码。_vue上传文件到后端vue上传文件到后端 ... 赞踩相关标签vue.jsjavascript前端el-inputel-data-pickervitefastapilangchain数据库uni-app微信小程序小程序iconvue3element plusjsonspring boot后端javaanti-design-vueaxios
赞
踩
1. ant-design-vue rules
<template>// 定义 a-form 表单 添加 动态属性 :model 表单值属性 ,: rulse 表单验证属性 <a-form ref="formRef" name="custom-validation" :model="formState" :rules="rules" > // *****注意这里的值是 name 不再是 porp****// <a-form-item label="Password" name="pass"> <a-input v-model:value="formState.pass" type="password" /> </a-form-item> <a-form-item label="Confirm" name="checkPass"> <a-input v-model:value="formState.checkPass" type="password" /> </a-form-item> <a-form-item label="Age" name="age"> <a-input-number v-model:value="formState.age" /> </a-form-item> <a-form-item :wrapper-col="{ span: 14, offset: 4 }"> <a-button type="primary" html-type="submit">Submit</a-button> </a-form-item> </a-form></template><script lang="ts">import type { Rule } from 'ant-design-vue/es/form';import { defineComponent, reactive } from 'vue';// 定义表单数据类型接口interface FormState { pass: string; checkPass: string; age: number | undefined;}export default defineComponent({ setup() { // reactive定义 表单双向数据绑定 const formState = reactive<FormState>({ pass: '', checkPass: '', age: undefined, }); // 自定义 表单验字段证方法 let checkAge = (_rule: Rule, value: number) => { if (!value) { return Promise.reject('Please input the age'); } setTimeout(() => { if (!Number.isInteger(value)) { return Promise.reject('Please input digits'); } else { if (value < 18) { return Promise.reject('Age must be greater than 18'); } else { return Promise.resolve(); } },1000} }; let validatePass = (_rule: Rule, value: string) => { if (value === '') { return Promise.reject('Please input the password'); } else { if (formState.checkPass !== '') { } return Promise.resolve(); } }; let validatePass2 = (_rule: Rule, value: string) => { if (value === '') { return Promise.reject('Please input the password again'); } else if (value !== formState.pass) { return Promise.reject("Two inputs don't match!"); } else { return Promise.resolve(); } }; // 定义 rules 验证属性 这里Record<string, Rule[]> 是定义rules 数据类型为key value 链表数据,其中value 数据类型为Rule[] const rules: Record<string, Rule[]> = { pass: [{ required: true, validator: validatePass, trigger: 'change' }], checkPass: [{ validator: validatePass2, trigger: 'change' }], age: [{ validator: checkAge, trigger: 'change' }], }; return { formState, rules }; },});</script>
2. element-plus rules
<template>// 定义 el-form 定义 表单数据model,如果不定义这个 rules 是获取不到 验证字段的值的,定义rules 属性 <el-form size="large" class="login-content-form" :model="ruleForm" :rules="rules" > // 注意这里的 form-item 属性是prop 与 ant 做区分 <el-form-item class="login-animation1" prop="userName" > <el-input type="text" placeholder="账户" v-model="ruleForm.userName"> </el-input> </el-form-item> <el-form-item class="login-animation2" prop="password"> <el-input placeholder="密码" v-model="ruleForm.password" > </el-input> </el-form-item> <el-form-item class="login-animation3" prop="code"> <el-col :span="15"> <el-input type="text" maxlength="5" placeholder="验证码" v-model="ruleForm.code" > </el-input> </el-col> <el-col :span="1"></el-col> <el-col :span="8"> <el-button class="login-content-code"> <el-image style="width: 100px; " /> </el-button> </el-col> </el-form-item> <el-form-item class="login-animation4"> <el-button type="primary" class="login-content-submit" > <span>{{ "登录"}}</span> </el-button> </el-form-item> </el-form></template> <script lang="ts">import { reactive, defineComponent} from 'vue';export default defineComponent({ name: 'loginAccount', setup() { const ruleForm = reactive({ userName: '', password: '', code: '', }) // 验证验证码 const checkCode=(rule: any, value: any, callback: any) => { console.log(value,"value") } // 自定义表单验证 const rules = reactive({ userName: [ { required: true, message: '请输入账号', trigger: 'blur' }, { min: 3, max: 5, message: '账号长度 在 3 到 5长度之间', trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 3, max: 5, message: '密码长度 在 3 到 5长度之间', trigger: 'blur' }, ], code: [ { required: true, message: '请输入验证码', trigger: 'blur' }, { validator: checkCode, trigger: 'change' }, ], }) return { rules, ruleForm }; },});</script>
注意:自定义验证表单方法时候不用使用 异步操作 async 否则会导致验证信息message 赋值(错误提示信息不显示)