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' }
    ],
},
相关推荐
dllxhcjla9 分钟前
css第二天
java·前端·css
远航_11 分钟前
10 个被严重低估的 JS 特性,直接少写 500 行代码
前端·javascript
起这个名字12 分钟前
感觉这篇 DeepSeek 给出的微前端实践很牛!轻喷!
前端
小高00713 分钟前
当前端面临百万级 API 请求:从"修 CSS 的"到架构师的进化之路
前端·javascript·面试
P7Dreamer14 分钟前
package.json:你以为只是配置文件,其实是项目的命门!
前端·node.js
BBB努力学习程序设计15 分钟前
让数据阅读更轻松:隔行换色表格的妙用
前端·html
西甲甲16 分钟前
Process Explorer、windows 任务管理器以及系统 API 之间的关系
前端
LateFrames16 分钟前
使用 Winform / WPF / WinUI3 / Electron 实现异型透明窗口
javascript·electron·wpf·winform·winui3
码农刚子18 分钟前
ASP.NET Core Blazor 核心功能二:Blazor表单和验证
前端·html
BBB努力学习程序设计20 分钟前
细线表格:打造优雅的数据展示界面
前端·html