这里讲的是element-u组件库中的校验规则,在不同组件库检验规则是不一样的,根据实际情况来说
表单校验:
1. 校验的必要性:
向后端发请求调用接口之前,我们需要对所要传递的参数进行验证,来把用户的错误扼杀在摇篮之中。<br /> 不要相信任何用户的输入!!!!!
2. 校验的内容:
1.内容不能为空
2.密码长度必须多少位
3.手机号的格式要合规
比如: 手机号不能为空,且必须为11位手机号 (/^1[0-9]{10}$/)
4.邮箱的格式要合规
……
3.校验的步骤:
3.1 定义验证规则。data()中按格式定义规则<br /> 3.2 在模板上做属性配置来应用规则(三个配置):<br /> a) 给表单中 el-form 组件绑定 model 为表单数据对象<br /> b) 给表单中 el-form 组件绑定 rules 属性配置验证规则<br /> c) 给需要验证的表单项 el-form-item 绑定 prop 属性,注意:prop 属性需要指定表<br /> 单对象中的数据名称<br /> 3.3 手动兜底验证
步骤1: 在data中定义规则
格式:
data() {
return {
rules: {
// 字段名1:表示要验证的属性
// 值: 表示验证规则列表。它是一个数组,数组中的每一项表示一条规则。
// 数组中的多条规则会按顺序进行
字段名1: [
{ 验证规则1 },
{ 验证规则2 },
],
字段名2: [
{ 验证规则1 },
{ 验证规则2 },
],
}
}
}
代码演示:
注意这里面的mobile,password仅做示例,实际情况需要根据后端定义的数据来显示
data () {
return {
form: {
phone: '', // 和后端保持一致
password: ''
},
rules: {
// 字段名:mobile就表示要验证的 属性
// 值: 是一个数组。数组中的每一项表示一条规则。
mobile: [
// trigger: 什么时候触发验证
{ required: true, message: '手机号不能为空', trigger: 'blur' },
// pattern : 正则
{ pattern: /^1[345678]\d{9}$/, message: '请输入合法的手机号', trigger: 'blur' }
],
password: [
{ required: true, message: '密码不能为空', trigger: 'blur' },
{ min: 6, max: 8, message: '长度为6-8位', trigger: 'blur' },
}
}
},
步骤2: 模板中的配置
代码演示:
注意这里仅做示范: 绑定的值是根据后端决定的
<el-form label-width="80px" :model="form" :rules="rules"> // 绑定地方: model和rules
<el-form-item label="手机号" prop="mobile"> // 绑定地方: prop
<el-input v-model="form.mobile"></el-input>
</el-form-item>
<el-form-item label="密码" prop="code">
<el-input v-model="form.code"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">立即创建</el-button>
<el-button @click="onCancel">取消</el-button>
</el-form-item>
</el-form>
验收效果:
当用户输入的内容不符合表单规则要求时,并且某个输入框失焦时,它会给出相应的提示,当我们输入的内容符合要求时,错误提示会自动消失。
步骤3: 手动兜底校验
格式:
element-ui的表单组件.validate(valid => {
if(valid) {
// 通过了验证
} else {
// 验证失败
}
})
代码演示:
第一步:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624198385716-82b0df1e-6ae9-4a72-9dc1-bebab34b5a9d.png#clientId=u8a3960f1-dc1a-4&from=paste&height=66&id=u1264de4a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=66&originWidth=350&originalType=binary&ratio=1&size=4124&status=done&style=none&taskId=uf85fc1ec-b927-453f-9f06-91721c701aa&width=350)
第二步:
doLogin () {
alert('doLogin')
},
onSubmit () {
// 手动兜底校验 提交数据
this.$refs.form.validate(valid => {
if (valid) {
// 表单检验通过 做后续的事情
this.doLogin()
} else {
alert('有错误')
}
})
}
表单校验中的-自定义校验规则:
比如: 密码不能是123456
格式: 在rules中定义validator
rules:{
属性名1: [
{
// 注意参数顺序
validator: function (rule, value, callback) {
// rule:采用的规则
// value: 被校验的值
// callback是回调函数,
// 如果通过了规则检验,就直接调用callback()
// 如果没有通过规则检验,就调用callback(错误对象,在错误对象中说明原因)
// 例如:callback(new Error('错误说明'))
},
trigger: 'blur'
}]
}
代码演示:
rules: {
name: [{required: true, message:'必须要填入', triggle: 'blur'}],
code: [
{
validator:(rule, value, callback)=>{
console.log(rule, value, callback)
if(value === '123456') {
callback(new Error('这是世界上最差的密码了'))
} else {
callback() // 无论成功失败,都要调用
}
},
triggle: 'blur'
},
{min: 6, max:8, message:'长度为6-8位', triggle: 'blur'},
{required: true, message:'必须要填入', triggle: 'blur'},
]
}
重置表单清理校验痕迹:
说明:
校验失败会有红色的提示文字,有时候我们需要在执行了某个操作之后把当前校校验失败留下的痕迹清理一下,为下一次校验做准备。
格式
this.$refs.form组件的引用.resetFields()