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()
}
},
密码至少包含大写字母、小写字母、数字和特殊字符中的三种,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的数字' }],