<!-- 新增用戶對話框\--> <el-dialog title\="添加用戶" :visible.sync\="dialogVisible" width\="30%" @close\="dialogClose" \> <el-form :model\="newUserForm" :rules\="newUserFormRules" ref\="newUserFormRef" label-width\="70px" \> <el-form-item label\="用户名" prop\="username"\> <el-input v-model\="newUserForm.username"\></el-input\> </el-form-item\> <el-form-item label\="密码" prop\="password"\> <el-input v-model\="newUserForm.password"\></el-input\> </el-form-item\> <el-form-item label\="邮箱" prop\="email"\> <el-input v-model\="newUserForm.email"\></el-input\> </el-form-item\> <el-form-item label\="手机" prop\="mobile"\> <el-input v-model\="newUserForm.mobile"\></el-input\> </el-form-item\> </el-form\> <span slot\="footer" class\="dialog-footer"\> <el-button @click\="dialogVisible \= false"\>取 消</el-button\> <el-button @click\="addNewUser('newUserFormRef')" type\="primary"\>确 定</el-button\> </span\> </el-dialog\>
方法数据部分
newUserForm: { username: 'abc', password: '123', email: '123@qw.cn', mobile: '12345678912' }, addNewUser (ref) { this.$refs[ref].validate(async valid => { console.log(1) if (valid) { const { data: res } = await this.$http.post('users', this.newUserForm) if (res.meta.status !== 201) return this.$message.error('添加用户失败') this.$message.success('添加用户成功') this.dialogVisible = false this.getUserList() } else { return this.$message.error('数据校验错误') } }) } data () { const checkMobile \= (rule, value, callback) \=> { setTimeout(() \=> { if (value.toString().length <= 6) return callback(new Error('手机长度不合法')) }, 1000) } const checkMail \= (rule, value, callback) \=> { const regEmail \= /^\[a-zA-Z0-9\_-\]+@\[a-zA-Z0-9\_-\]+(\\.\[a-zA-Z0-9\_-\]+)+$/ setTimeout(() \=> { if (regEmail.test(value)) { callback() } else { callback(new Error('请输入合法的邮箱')) } }, 1000) } return { newUserFormRules: { username: \[ { required: true, message: '必填项', trigger: 'blur' }, { min: 3, max: 10, message: '长度在3-10之间', trigger: 'blur' } \], password: \[ { required: true, message: '必填项', trigger: 'blur' }, { min: 3, max: 10, message: '长度在3-10之间', trigger: 'blur' } \], email: \[ { required: true, message: '必填项', trigger: 'blur' }, { validator: checkMail, trigger: 'blur' } \], mobile: \[ { required: true, message: '必填项', trigger: 'blur' }, { validator: checkMobile, trigger: 'blur' } \] } } }
按理说表单上prop我也是写在el-form-item上,属性都在,为什么一直执行不了,求大佬帮忙看看,谢谢
已解决
悬赏分:0
- 解决时间 2021-11-28 06:06
点赞 0反对 0举报 0
收藏 0
分享 0
回答3
最佳
-
经过我的细心检查不是validate的问题,而是你的问题。
this.$refs[ref].validate()是一个promise函数,我把它输出了一下,发现它一直是pending状态,证明它一直在执行(因为这是一个异步的,所以能输出4),也就是说你的rule有问题。
事实证明你写的检查手机号的自定义规则有问题:你少写了一个callback(),以下是我改好的
`
const checkMobile = (rule, value, callback) => {setTimeout(() => { if (value.toString().length <= 6) { callback(new Error('手机长度不合法')) } else { // 这个else你没写 callback() } }, 1000) }
`
支持 0 反对 0 举报2021-11-27 08:58