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

封装校验规则(以及复选框和整体校验)-----Vue3+ts项目

登录校验页面

<script setup lang="ts">
import { ref } from 'vue'
import { mobileRules, passwordRules } from '@/utils/rules'
const mobile = ref('')
const password = ref('')
</script>
<!-- 表单 -->
    <van-form autocomplete="off">
      <van-field
        v-model="mobile"
        :rules="mobileRules"
        placeholder="请输入手机号"
        type="tel"
      ></van-field>
      <van-field
        v-model="password"
        :rules="passwordRules"
        placeholder="请输入密码"
        type="password"
      ></van-field>

封装校验页面utils/rules.ts
提取表单校验规则(为了其他页面复用)
加上 FieldRule ,可以有提示,提高效率

import type { FieldRule } from 'vant'
const mobileRules = [
  { required: true, message: '请输入手机号' },
  { pattern: /^1[3-9]\d{9}$/, message: '手机号不正确' }
]
const passwordRules: FieldRule[] = [
  { required: true, message: '请输入密码' },
  { pattern: /^\w{8,24}$/, message: '密码必须是8-24个字符' }
]
export { mobileRules, passwordRules }

在这里插入图片描述
效果图:
在这里插入图片描述
表单整体校验
加上native-type=“submit”,只有是submit时才能触发校验,这样点击登录就可以实现整体校验
" native-type" 是按钮的原始类型,通常用于表示某种原生的类型。

 <div class="cp-cell">
    <van-button native-type="submit" block round type="primary">登 录</van-button>
  </div>

复选框校验

//默认为false不勾选
const agree = ref(false)
const onSubmit = () => {
//如果agree.value不存在,也就是值为false,则提示勾选
  if (!agree.value) {
    return showToast('请勾选协议')
  }
  console.log(111)
}

submit提交表单且验证通过后触发

  <van-form autocomplete="off" @submit="onSubmit">
	<div class="cp-cell">
	   <van-checkbox v-model="agree">
	       <span>我已同意</span>
	       <a href="javascript:;">用户协议</a>
	       <span></span>
	       <a href="javascript:;">隐私条款</a>
	     </van-checkbox>
	  </div>
  </van-form>

http://www.kler.cn/news/160868.html

相关文章:

  • 开源MES/免费MES/开源MES生产流程管理
  • 【面试经典150 | 二分查找】搜索二维矩阵
  • 合唱队形问题
  • python数据分析
  • C语言实现植物大战僵尸(完整版)
  • 剑指 Offer(第2版)面试题 19:正则表达式匹配
  • Linux中的日志管理
  • 【智能家居】三、添加语音识别模块的串口读取功能点
  • Java语言中的修饰符
  • 统计centos系统哪一个进程打开文件描述符
  • CSS 在性能优化方面的实践
  • 使用pytorch从零开始实现迷你GPT
  • R语言手册30分钟上手
  • Javase | 贪吃蛇小游戏
  • L1-025:正整数A+B
  • python筛选并删除两个文件夹中不同文件名的文件
  • 2-redis高级-centos上安装redis(编译安装、redis启动)、redis客户端操作、redis使用场景、redis中的通用命令
  • Google Guava 集合工具使用详解
  • Node.js快速搭建简单的HTTP服务器并发布公网远程访问
  • 多向通信----多人聊天
  • Elaticsearch 学习笔记
  • 量子纠缠通讯:未来信息技术的革新者
  • AI算力研究报告:智算供给格局分化国产化进程有望加速
  • 【华为网络-配置-025】- 同 VLAN 下不同网段通信(启用 Sub 地址)
  • 圆通单号查询,圆通速递物流查询,对需要的单号进行颜色标记
  • 你了解架构图吗?
  • pytorch中的transpose用法
  • Verilog开源项目——百兆以太网交换机(四)令牌桶管理单元设计
  • CSS-2
  • php中WebSocket简单使用