vue el-form 自定义校验, 校验用户名调接口查重

vue el-form 自定义校验, 校验用户名调接口查重

  • html
html 复制代码
 <el-form ref="userForm" :model="userForm" :rules="rules">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="userForm.username" placeholder="请输入用户名"></el-input>
    </el-form-item>
  </el-form>
  • js
js 复制代码
// 用户名唯一性校验
const validateUsername = (rule, value, callback) => {
  // 基本验证:不能为空
  if (!value) {
    return callback(new Error('请输入用户名'));
  }

  // 基本验证:长度限制
  if (value.length < 3 || value.length > 20) {
    return callback(new Error('用户名长度必须在3-20个字符之间'));
  }

  // 正则验证:只能包含字母、数字、下划线
  const reg = /^[a-zA-Z0-9_]+$/;
  if (!reg.test(value)) {
    return callback(new Error('用户名只能包含字母、数字和下划线'));
  }

  // 模拟接口请求,实际项目中替换为真实接口
  checkUsernameUnique(value)
    .then((isUnique) => {
      if (isUnique) {
        callback(); // 校验通过
      } else {
        callback(new Error('该用户名已被使用,请更换其他用户名'));
      }
    })
    .catch((error) => {
      callback(new Error('用户名校验失败,请稍后重试'));
    });
};

// 规则
rules: {
    username: [
       { validator: validateUsername, trigger: 'blur' }
    ],
},
相关推荐
JustHappy1 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了
前端·后端·网络协议
老毛肚1 小时前
jeecg-boot-base-core 02 day
javascript·python
snow@li1 小时前
SEO-文章标题:写文章时候,分类+主标题+大纲+解释 作为标题 / 不点进去也知道全文覆盖什么 / 标题即架构
前端
kyriewen2 小时前
Git Commit 前自动修复代码风格?配置 Husky + lint-staged,从此 CR 只聊逻辑
前端·git·面试
岁月宁静2 小时前
RAG 文档摄入全链路,从原理到生产落地
vue.js·人工智能·python
小和尚同志2 小时前
AI 自动化测试探索(一):Playwright MCP
前端·人工智能·aigc
老马识途2.03 小时前
在AI的帮助下理解spring的启动过程
java·前端·spring
徐小夕3 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
运筹vivo@3 小时前
Python ContextVar 底层机制与内存模型拆解
前端·数据库·python
#麻辣小龙虾#5 小时前
基于vue3.0开发一款【固废与废气运维管理系统】(支持源码)
前端·vue.js·vue3