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' }
    ],
},
相关推荐
2501_9209317018 分钟前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得02 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5162 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino2 小时前
图片、文件的预览
前端·javascript
2501_920931704 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05284 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔4 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李4 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN4 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒4 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局