element-ui 自定义表单验证 , 但是不出现小红心了
基本上按照文档上提供的方式做就没啥大问题 , 我遇到的问题是 , 自定义以后不显示小红星了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | <el-form :model= "ruleForm2" status-icon :rules= "rules2" ref = "ruleForm2" label-width= "100px" class = "demo-ruleForm" > <el-form-item label= "密码" prop= "pass" > <el-input type= "password" v-model= "ruleForm2.pass" autocomplete= "off" ></el-input> </el-form-item> <el-form-item label= "确认密码" prop= "checkPass" > <el-input type= "password" v-model= "ruleForm2.checkPass" autocomplete= "off" ></el-input> </el-form-item> <el-form-item label= "年龄" prop= "age" > <el-input v-model.number= "ruleForm2.age" ></el-input> </el-form-item> <el-form-item> <el-button type= "primary" @click= "submitForm('ruleForm2')" >提交</el-button> <el-button @click= "resetForm('ruleForm2')" >重置</el-button> </el-form-item> </el-form> <script> export default { data() { var checkAge = (rule, value, callback) => { if (!value) { return callback( new Error( '年龄不能为空' )); } setTimeout(() => { if (!Number.isInteger(value)) { callback( new Error( '请输入数字值' )); } else { if (value < 18) { callback( new Error( '必须年满18岁' )); } else { callback(); } } }, 1000); }; var validatePass = (rule, value, callback) => { if (value === '' ) { callback( new Error( '请输入密码' )); } else { if ( this .ruleForm2.checkPass !== '' ) { this .$refs.ruleForm2.validateField( 'checkPass' ); } callback(); } }; var validatePass2 = (rule, value, callback) => { if (value === '' ) { callback( new Error( '请再次输入密码' )); } else if (value !== this .ruleForm2.pass) { callback( new Error( '两次输入密码不一致!' )); } else { callback(); } }; return { ruleForm2: { pass: '' , checkPass: '' , age: '' }, rules2: { pass: [ { validator: validatePass, trigger: 'blur' } ], checkPass: [ { validator: validatePass2, trigger: 'blur' } ], age: [ { validator: checkAge, trigger: 'blur' } ] } }; }, methods: { submitForm(formName) { this .$refs[formName].validate((valid) => { if (valid) { alert( 'submit!' ); } else { console.log( 'error submit!!' ); return false ; } }); }, resetForm(formName) { this .$refs[formName].resetFields(); } } } </script> |
我只是照着改了一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | let validatePass = (rule, value, callback) => { console.log(rule); console.log(value); console.log(callback); if (!value) { return callback( new Error( "请填写公司名称" )); } if ( this .form.id) { callback(); return true ; } readScmSupplierPage({ name: this .form.name ,type: '2' }) .then(res => { if (res.data.length > 0) { callback( new Error( "名称重复" )); } else { callback(); } }) . catch (err => { console.log(err); }); }; |
基本上和自定义没啥关系
1 2 3 4 5 6 7 | rules: { // name: [{ required: true, message: "请输入公司名称", trigger: "blur" }], name: [{ required: true , validator: validatePass, trigger: "blur" }], abbreviation: [ { required: true , message: "请输入公司简称" , trigger: "blur" } ] }, |
只是我发现如果自定义了 , 在这个地方加required: true, 是不起作用的, 必须在form表单上面加
1 2 3 | <el-form-item label= "公司名称" :label-width= "formLabelWidth" prop= "name" required> <el-input v-model= "form.name" ></el-input> </el-form-item> |
就这样小红星星就出现啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现