1. <template>
    2. <div class="home">
    3. <el-form
    4. status-icon
    5. :model="ruleForm"
    6. :rules="rules"
    7. ref="ruleForm"
    8. label-width="100px"
    9. class="demo-ruleForm"
    10. >
    11. <el-form-item label="用户名" prop="name">
    12. <el-input v-model="ruleForm.name"></el-input>
    13. </el-form-item>
    14. <el-form-item label="密码" prop="pass">
    15. <el-input
    16. type="password"
    17. v-model="ruleForm.pass"
    18. autocomplete="off"
    19. ></el-input>
    20. </el-form-item>
    21. <el-form-item label="确认密码" prop="checkPass">
    22. <el-input
    23. type="password"
    24. v-model="ruleForm.checkPass"
    25. autocomplete="off"
    26. ></el-input>
    27. </el-form-item>
    28. <el-form-item>
    29. <el-button type="primary" @click="submitForm('ruleForm')"
    30. >立即创建</el-button
    31. >
    32. </el-form-item>
    33. </el-form>
    34. </div>
    35. </template>
    36. <script>
    37. export default {
    38. name: "Home",
    39. data() {
    40. var validatePass = (rule, value, callback) => {
    41. if (value === "") {
    42. callback(new Error("密码不能为空"));
    43. } else {
    44. /* 数字,大小写字母,特殊字符组成长度不能小于6 */
    45. var reg = /^(?![A-z0-9]+$)(?=.[^%&',;=?$\x22])(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,}$/;
    46. if (!reg.test(value)) {
    47. callback(
    48. new Error("密码必须由数字,大小写字母,特殊字符组成长度不能小于6")
    49. );
    50. } else {
    51. callback();
    52. }
    53. }
    54. };
    55. var validateCheckPass = (rule, value, callback) => {
    56. if (value === "") {
    57. callback(new Error("请再次输入密码"));
    58. } else if (value !== this.ruleForm.pass) {
    59. callback(new Error("两次输入密码不一致!"));
    60. } else {
    61. callback();
    62. }
    63. };
    64. return {
    65. ruleForm: {
    66. name: "",
    67. pass: "",
    68. checkPass: "",
    69. },
    70. //表单验证规则
    71. rules: {
    72. name: [
    73. { required: true, message: "请输入用户名", trigger: "blur" },
    74. { min: 5, message: "用户名最少是5个字符", trigger: "blur" },
    75. ],
    76. pass: [{ required: true, validator: validatePass }],
    77. checkPass: [
    78. { required: true, validator: validateCheckPass, trigger: "blur" },
    79. ],
    80. },
    81. };
    82. },
    83. methods: {
    84. submitForm(formName) {
    85. this.$refs[formName].validate((valid) => {
    86. console.log(valid);
    87. if (valid) {
    88. alert("submit!");
    89. // HTTP
    90. } else {
    91. console.log("error submit!!");
    92. return false;
    93. }
    94. });
    95. },
    96. },
    97. };
    98. </script>
    99. <style scoped>
    100. </style>