[vue elementUI]表单校验

使用elementUI中的<el-form>表单,实现表单检验功能。

要实现这个功能,有三个要素

首先你要有校验表达的规则

规则中的属性在注释介绍

// rules是一个对象,对象中的属性是你要校验的属性
const rules = {
    // 属性数组,每一个数组元素对应着不同的提示信息
  username: [
    {
      required: true,
      message: '用户名不能为空'
    }
  ],
    // password数组中有两个元素,一个判断非空,另一个判断字符长度
  password: [
    {
      required: true,
      message: '密码不能为空'
    },
    {
      min: 6,
      max: 24,
      message: '密码要求长度6-24个字符'
    }
  ],
  agree: [
    {
        // 自定义校验函数,rule为规则,val则是你要校验的值,callback是回调函数
      validator: (rule, val, callback) => {
        // callback() 代表成功,如果失败则callback一个new Error
        return val ? callback() : new Error('请勾选用户协议')
      }
    }
  ]
}

然后你要将规则挂载到你的form表单上

为表单的rules属性赋值

你的表单虽然获得了校验规则,但是他并不知道,哪一条字段对应着哪一条规则

使用prop字段绑定规则

规则的触发条件其实是双向绑定着el-input,el-checkbox的值,如果值变化的话,就触发校验条件。

如果你想监听非表格上的值,那就需要自己写一个watch监听数值,进行手动的双向绑定了。

Vue 中使用 Element UI 进行表单校验是一种常见的需求,Element UI 提供了便捷的表单组件和校验机制。以下是一个完整的示例,展示了如何实现基础的表单校验。 ### 表单校验的基本结构 Element UI 的 `el-form` 组件支持数据驱动的校验方式,可以通过 `model` 和 `rules` 属性定义表单字段及其规则。下面是一个简单的例子: ```vue <template> <el-form :model="form" :rules="rules" ref="formRef" label-width="120px"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input-number v-model="form.age" :min="0" :max="150"></el-input-number> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { name: '', email: '', age: null, }, rules: { name: [ { required: true, message: '请输入姓名', trigger: 'blur' }, { min: 2, max: 10, message: '长度在2到10个字符之间', trigger: 'blur' }, ], email: [ { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱格式', trigger: ['blur', 'change'] }, ], age: [ { required: true, message: '请输入年龄', trigger: 'blur' }, { type: 'number', message: '年龄必须为数字', trigger: 'blur' }, ], }, }; }, methods: { onSubmit() { this.$refs.formRef.validate(valid => { if (valid) { alert('验证通过,提交表单'); } else { console.log('验证失败'); return false; } }); }, }, }; </script> ``` ### 实时校验与触发事件 Element UI 支持多种触发事件进行校验,例如 `blur`、`change` 等。通过配置 `trigger` 可以控制校验的时机。对于实时反馈的需求,可以结合 `@blur` 或 `@change` 事件手动触发校验[^1]。 例如,可以在输入框上添加一个 `@blur` 事件,并调用 `validateField` 方法对特定字段进行校验: ```vue <el-input v-model="form.name" @blur="validateName"></el-input> ``` 对应的 `methods` 定义如下: ```javascript methods: { validateName() { this.$refs.formRef.validateField('name', (errorMessage) => { if (errorMessage) { console.log('校验错误:', errorMessage); } else { console.log('校验通过'); } }); } } ``` ### 动态扩展校验规则 如果需要根据用户输入动态调整校验规则,可以通过编程方式修改 `rules` 对象。例如,当某个条件满足时,增加一个新的校验规则或修改现有规则的内容。 ```javascript this.rules.age.push({ validator: this.checkAge, trigger: 'blur' }); checkAge(rule, value, callback) { if (value < 18) { callback(new Error('年龄必须大于等于18岁')); } else { callback(); } } ``` ### 总结 通过上述方法,可以在 Vue 中灵活地使用 Element UI 进行表单校验,包括基本的字段校验、实时反馈以及动态规则扩展。这种设计能够满足大多数业务场景下的表单校验需求,并提供良好的用户体验。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林总肿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值