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-formel-form-item :来自 Element Plus 的组件,用于生成表单结构。prop 属性表示当前验证的字段,rules 通过 :rules 绑定。
  4. onSubmit :点击提交按钮时会触发验证,调用 validate 方法验证整个表单,验证通过时弹出成功提示,否则弹出失败提示。

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

相关推荐
yume_sibai28 分钟前
TS 常用内置方法
前端·javascript·typescript
新知图书29 分钟前
ArkTS语言、基本组成与数据类型
前端·javascript·typescript
西西学代码30 分钟前
Flutter---个人信息(1)---实现简单的UI
开发语言·javascript·flutter
嘗_43 分钟前
手写自己的小型react
前端·javascript·react.js
嘀咕博客1 小时前
h5游戏免费下载:HTML5拉杆子过关小游戏
前端·游戏·html5
Moonbit1 小时前
MoonBit 推出 LLVM Debugger,核心用户数破十万
前端·编程语言·llvm
zuo-yiran1 小时前
vue div标签可输入状态下实现数据双向绑定
前端·javascript·vue.js
qq_316837751 小时前
使用leader-line-vue 时垂直元素间距过小连线打转的解决
前端·javascript·vue.js
天天向上10241 小时前
vue3使用ONLYOFFICE 实现在线Word,Excel等文档
前端·javascript·html
光影少年1 小时前
React Native 第三章
javascript·react native·react.js