表单校验-

1. 准备表单对象  与接口文档一致

// 表单数据对象
const userInfo = ref({
  account: '1311111111',
  password: '123456',
  agree: true
})

2. 准备规则对象 

// 规则数据对象
const rules = {
  account: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
  password: [
    { required: true, message: '密码不能为空', trigger: 'blur' },
    { min: 6, max: 14, message: '密码为 6-14 位的非空字符', trigger: 'blur' }
  ],
  agree: [
    {
      validator: (rule, value, callback) => {
        // console.log(value)
        // 校验规则
        if (value === true) {
          callback()
        } else {
          callback(new Error('请先勾选协议'))
        }
      }
    }
  ]
}

validator参数

rule:   这是与当前验证字段相关的规则对象。它可能包含该字段的多个验证规则和相关的元数据。

value:   这是需要验证的字段的值。在您的情况下,它可能是表单中的一个复选框(checkbox)的值,您正在检查这个值是否为 true

callback:   这是一个回调函数  在校验成功或失败时均需要调用它  在成功时可直接调用  在失败时需要携带参数调用

3. 与表单元素绑定

  <div class="form">
            <el-form
              ref="formRef"
              :model="formModel"
              :rules="rules"
              label-position="right"
              label-width="60px"
              status-icon
            >
              <el-form-item label="账户" prop="account">
                <el-input v-model="formModel.account" />
              </el-form-item>
              <el-form-item label="密码" prop="password">
                <el-input v-model="formModel.password" />
              </el-form-item>
              <el-form-item prop="agree" label-width="22px">
                <el-checkbox v-model="formModel.agree" size="large">
                  我已同意隐私条款和服务条款
                </el-checkbox>
              </el-form-item>
              <el-button @click="doLogin" size="large" class="subBtn"
                >点击登录</el-button
              >
            </el-form>
          </div>

4. 点击登录统一校验

// 点击登录校验
const formRef = ref(null)
const router = useRouter()
// const { account, password } = formModel.value
const doLogin = () => {
  formRef.value.validate(async (valid) => {
    const { account, password } = formModel.value
    // valid: 所有表单都通过校验  才为true
    console.log(valid)
    // 以valid做为判断条件 如果通过校验才执行登录逻辑
    if (valid) {
      // console.log('校验通过')
      await userStore.getUserInfo({ account, password })
      ElMessage.success('登陆成功')
      router.replace({ path: '/' })
    }
  })
}

组件库表单自带校验方法validate(valid, fields)

valid:第一个参数为判断校验是否通过  所有校验均通过  valid为true

fields:第二个参数为校验的字段值  但是校验成功时好像拿不到值

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值