点击登录按钮先检测输入框的规则检测(vue组合式)

javascript 复制代码
<template>
  <el-form :model="user" :rules="rules" ref="loginForm" label-width="auto" style="max-width: 600px">
    <el-form-item label="用户名" prop="name">
      <el-input v-model="user.name" id="name" placeholder="请输入用户名" />
    </el-form-item>
    <el-form-item label="密码" prop="pass">
      <el-input v-model="user.pass" id="pass" placeholder="请输入密码" />
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">登录</el-button>
    </el-form-item>
  </el-form>
</template>

<script lang="ts" setup>
import { ref, reactive } from 'vue'
import { ElMessage } from 'element-plus'

// 响应式的对象
const user = reactive({
  name: '',
  pass: '',
})

// 设置验证规则
const rules = {
  name: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 3, max: 30, message: '长度在 3 到 30 个字符', trigger: 'blur' },
  ],
  pass: [{ required: true, message: '请输入密码', trigger: 'blur' }],
}

// 创建对表单的引用
const loginForm = ref(null)

// 点击登录按钮的时候,验证是否满足rules规则
const onSubmit = () => {
  if (loginForm.value) {
    loginForm.value.validate((valid: boolean) => {
      if (valid) {
        // 表单验证通过,执行登录逻辑
        console.log(user)
        ElMessage.success('登录成功')
      } else {
        // 表单验证未通过,显示错误信息
        ElMessage.error('请检查输入的内容')
        return false
      }
    })
  }
}
</script>

解释

  1. 创建响应式对象:

    • 使用 reactive 创建响应式的 user 对象。
    • 使用 ref 创建对表单的引用 loginForm。
  2. 设置验证规则:

    • 定义 rules 对象,包含用户名和密码的验证规则。
  3. 模板中使用 ref 属性:

    • 在 <el-form> 元素上使用 ref="loginForm",将其引用注册到 loginForm。
  4. onSubmit 方法:

    • 在 onSubmit 方法中,通过 loginForm.value 访问表单,并调用 validate 方法验证表单。
    • validate 方法执行后,传递一个布尔值 valid 到回调函数中。如果 valid 为 true,则表示表单验证通过;否则,显示错误消息。
  5. 显示消息:

    • 使用 ElMessage 显示成功或失败的消息。(ElMessage是EleMent Plus提供的信息组件)
相关推荐
Flynt14 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
slongzhang_15 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
北冥有鱼15 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
liyi_hz200818 小时前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
apollo_qwe18 小时前
大模型 API 接通了,AI 聊天页面为什么还是不好用?
前端·vue.js·人工智能
志尊宝19 小时前
AI原生前端开发(029):AI辅助的文档自动生成
javascript·人工智能·ai-native
一个游离的指针19 小时前
ES6新特性:let、const、块级作用域
开发语言·javascript·es6
Hilaku20 小时前
删了一个没用的 console.log,生产环境直接崩了!
前端·javascript·程序员
真上帝的左手20 小时前
2. 编程语言-JavaScript
开发语言·javascript
2601_9498477520 小时前
Form-data 跨端三方库仓颉适配全流程
前端·javascript·flutter