el-form-item 组件单独设置当前表单项校验规则(自定义校验规则)
-
el-form 表单验证日常写法
-
直接在
el-form
组件中写
rules
属性定义校验规则, -
el-form-item
组件上写
props
属性用来传入
el-form
组件中
model
中对应的字段,
-
直接在
-
公司有封装好的表单组件又未包含上传文件组件(封装的表单组件中每个表单项的校验规则不是在一个对象中写的,是在当前表单项设置属性中写的),
-
需要在封装好的表单组件中使用
插槽
来写上传图片的表单项, -
如果此时需要设定上传图片
必填
,则需要在
el-form-item
组件上定义上传图片的校验规则
rules
。
-
需要在封装好的表单组件中使用
【注意】表单验证一定要在
el-form-item
组件中加上属性 prop
<el-form-item
v-if="dialogType !== 'detail'"
prop="pic"
label="上传图片:"
slot="otherFormItem"
:rules="picRules"
>
<el-upload>
...
</el-upload>
</el-form-item>
// 上传校验规则
picRules: [
{
required: true,
message: '请上传图片',
// trigger: 'change',
validator: this.picValidator
}
// { validator: picValidator }
],
/**** 自定义校验规则 ****/
picValidator(rule, value, callback) {
if (this.fileArr.length === 0) {
callback(new Error('校验:请上传图片')) // 一定要写 callBack() 验证完成时调用的回调函数 https://github.com/yiminghe/async-validator
} else {
callback()
}
},
补充
1.密码校验
密码至少包含大写字母、小写字母、数字和特殊字符中的三种,6-18位
// 密码校验
pwValidateHandler(rules, value, callback) {
console.log('value----', value)
// 密码至少包含大写字母、小写字母、数字和特殊字符中的三种
const pwReg = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,16}$/
if(value && (value.length < 8 || value.length > 16)){
callback(new Error('密码长度8-16位')) // 单独判断,避免提示语太长
} else if(pwReg.test(value)) {
callback()
} else {
callback(new Error('密码至少包含大写字母、小写字母、数字和特殊字符中的三种'))
}
}
正则校验
rules: [{ pattern: /^[0-9]*$/, message: '仅支持输入大于0的数字' }],
版权声明:本文为m0_53562074原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。