<template> <div class="home"> <el-form status-icon :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" > <el-form-item label="用户名" prop="name"> <el-input v-model="ruleForm.name"></el-input> </el-form-item> <el-form-item label="密码" prop="pass"> <el-input type="password" v-model="ruleForm.pass" autocomplete="off" ></el-input> </el-form-item> <el-form-item label="确认密码" prop="checkPass"> <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off" ></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('ruleForm')" >立即创建</el-button > </el-form-item> </el-form> </div></template><script>export default { name: "Home", data() { var validatePass = (rule, value, callback) => { if (value === "") { callback(new Error("密码不能为空")); } else { /* 数字,大小写字母,特殊字符组成长度不能小于6 */ var reg = /^(?![A-z0-9]+$)(?=.[^%&',;=?$\x22])(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,}$/; if (!reg.test(value)) { callback( new Error("密码必须由数字,大小写字母,特殊字符组成长度不能小于6") ); } else { callback(); } } }; var validateCheckPass = (rule, value, callback) => { if (value === "") { callback(new Error("请再次输入密码")); } else if (value !== this.ruleForm.pass) { callback(new Error("两次输入密码不一致!")); } else { callback(); } }; return { ruleForm: { name: "", pass: "", checkPass: "", }, //表单验证规则 rules: { name: [ { required: true, message: "请输入用户名", trigger: "blur" }, { min: 5, message: "用户名最少是5个字符", trigger: "blur" }, ], pass: [{ required: true, validator: validatePass }], checkPass: [ { required: true, validator: validateCheckPass, trigger: "blur" }, ], }, }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { console.log(valid); if (valid) { alert("submit!"); // HTTP } else { console.log("error submit!!"); return false; } }); }, },};</script><style scoped></style>