Vue 3 中使用 `rules` 进行表单验证

在 Vue 3 中,rules 通常用于表单验证,特别是在结合表单库(如 Element Plus 或 Ant Design Vue)时,rules 是验证器的配置项。这里是一个简单的使用 rules 进行表单验证的示例:

使用 Element Plus 的例子

首先,确保已经安装并引入了 Element Plus:

bash 复制代码
npm install element-plus

Vue 组件代码

vue 复制代码
<template>
  <el-form :model="formData" :rules="rules" ref="formRef">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="formData.username"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input type="password" v-model="formData.password"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">提交</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    // 表单数据
    const formData = ref({
      username: '',
      password: ''
    });

    // 验证规则
    const rules = ref({
      username: [
        { required: true, message: '请输入用户名', trigger: 'blur' },
        { min: 3, max: 15, message: '用户名长度应在 3 到 15 个字符之间', trigger: 'blur' }
      ],
      password: [
        { required: true, message: '请输入密码', trigger: 'blur' },
        { min: 6, message: '密码长度至少为6个字符', trigger: 'blur' }
      ]
    });

    const formRef = ref(null);

    // 提交表单
    const onSubmit = () => {
      formRef.value.validate((valid) => {
        if (valid) {
          alert('表单验证成功!');
        } else {
          alert('表单验证失败!');
          return false;
        }
      });
    };

    return {
      formData,
      rules,
      formRef,
      onSubmit
    };
  }
};
</script>

代码说明

  1. formData :定义表单的数据,使用 ref 来使其具有响应性。
  2. rules:定义表单的验证规则。每个字段都可以设置多个规则,比如必填、最小长度和最大长度等。
  3. el-form 和 el-form-item :来自 Element Plus 的组件,用于生成表单结构。prop 属性表示当前验证的字段,rules 通过 :rules 绑定。
  4. onSubmit :点击提交按钮时会触发验证,调用 validate 方法验证整个表单,验证通过时弹出成功提示,否则弹出失败提示。

你可以根据实际需求对 rules 进行扩展,比如增加正则表达式验证邮箱格式、数字范围验证等。

相关推荐
半个落月3 小时前
LangSmith 全链路观测(下):用 Dataset 与 LLM Judge 量化评估 RA
javascript·langchain
半个落月3 小时前
LangSmith 全链路观测(上):用 LangGraph 与 Milvus 构建可追踪的 RAG 客服
javascript·langchain
Java后端的Ai之路4 小时前
06-React-Props
前端·react.js·前端框架
半个落月4 小时前
LangChain.js Agent 中间件实战:生命周期、动态工具与文件权限
javascript·langchain
Flynt4 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
Csvn5 小时前
渲染管线
前端
程序员大阳5 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角
志尊宝5 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金6 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
柳杉6 小时前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化