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' }
    ],
},
相关推荐
问道飞鱼3 分钟前
【前端知识】React生态你了解多少?
前端·react.js·前端框架·生态
Pu_Nine_93 分钟前
前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用
前端·langchain·sse·ai对话
optimistic_chen13 分钟前
【Vue3入门】Pinia 状态管理 和 ElementPlus组件库
前端·javascript·vue.js·elementui·pinia·组件
kgduu14 分钟前
js之网络请求与远程资源
开发语言·javascript·网络
酉鬼女又兒16 分钟前
零基础入门前端JavaScript 核心语法:var/let/const、箭头函数与 setTimeout 循环陷阱全解析(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·蓝桥杯
Bling_Bling_120 分钟前
【无标题】
前端·网络协议
We་ct20 分钟前
React Diff & Key 核心解析
开发语言·前端·javascript·react.js·前端框架·reactjs·diff
哥本哈士奇21 分钟前
Vue 3 快速入门:从零搭建前后端 CRUD 应用
前端·javascript·vue.js
biubiubiu070622 分钟前
Agent 是如何拥有“手脚”的(ReAct 运行流程)
开发语言·前端·javascript
摸鱼的春哥26 分钟前
Agent教程21:知识图谱🕸,让AI🤖学会联想
前端·javascript·后端