注册页面提交验证-密保问题实现

实现页面

在这里插入图片描述

需求

在这里插入图片描述
在这里插入图片描述

HTML

  <div class="register-form">
      <el-form ref="regForm" :model="form" :rules="rules" label-width="120px" class="demo-ruleForm" @submit.native.prevent>
        <el-form-item prop="account" label="用户名:">
          <el-input v-model="form.account" type="text" placeholder="不超过15个字符">
          </el-input>
        </el-form-item>
        <el-form-item prop="pwd" label ="密码:">
          <el-input v-model="form.pwd" type="password" placeholder="6-16位大小写字母+数字组合" auto-complete="off" >
          </el-input>
        </el-form-item>
        <el-form-item prop="confirmPass" label ="确认密码:">
          <el-input v-model="form.confirmPass" placeholder="重复密码" type="password">
          </el-input>
        </el-form-item>
        <el-form-item prop="security1"  label="密保问题一:">
          <el-select v-model="form.security1" class="wid">
            <el-option label="你父亲的姓名" value="1"></el-option>
            <el-option label="你母亲的姓名" value="2"></el-option>
            <el-option label="你的高中学校" value="3"></el-option>
            <el-option label="你的大学学校" value="4"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item prop="answer1" label="答案:">
          <el-input v-model="form.answer1" type="text" placeholder="不超过10个字符">
          </el-input>
        </el-form-item>
        <el-form-item prop="security2"  label="密保问题二:">
          <el-select v-model="form.security2" class="wid">
            <el-option label="你父亲的姓名" value="1"></el-option>
            <el-option label="你母亲的姓名" value="2"></el-option>
            <el-option label="你的高中学校" value="3"></el-option>
            <el-option label="你的大学学校" value="4"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item prop="answer2" label="答案:">
          <el-input v-model="form.answer2" type="text" placeholder="不超过10个字符">
          </el-input>
        </el-form-item>
        <el-form-item prop="security3"  label="密保问题三:">
          <el-select v-model="form.security3" class="wid">
            <el-option label="你父亲的姓名" value="1"></el-option>
            <el-option label="你母亲的姓名" value="2"></el-option>
            <el-option label="你的高中学校" value="3"></el-option>
            <el-option label="你的大学学校" value="4"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item prop="answer3" label="答案:">
          <el-input v-model="form.answer3" type="text" placeholder="不超过10个字符">
          </el-input>
        </el-form-item>
        <el-form-item style="width:100%;margin-bottom:0">
          <el-button :loading="loading" type="primary" style="width:100%;background: #00aaff" @click.native.prevent="submit">
            <span v-if="!loading">提交注册</span>
            <span v-else>注册中...</span>
          </el-button>
        </el-form-item>
      </el-form>
    </div>

js

  export default {
    name: "Register",
    data(){
      let validateAccount = (rules,value,callback) =>{
        if (/[\u4E00-\u9FA5]/g.test(value)) {
          callback(new Error('账户名称不能输入汉字!'));
        } else if (/^[0-9]+$/g.test(value)) {
          callback(new Error('账户名称不能输入纯数字!'));
        } else {
          callback();
        }

      }
      let validateConfirmPass = (rule, value, callback) => {
        if (value !== this.form.pwd) {
          callback(new Error('两次输入密码不一致,请重新输入'));
        } else {
          callback();
        }
      };
      return {
        imageUrl:"",
        loading:false,
        fileData:null,
        form:{
          account:"",
          pwd:"",
          confirmPass:"",
          security1:"1",
          security2:"3",
          security3:"4",
          answer1:"",
          answer2:"",
          answer3:""
        },
        rules:{
          account:[
            { required: true, message: '请输入用户名', trigger: 'blur' },
            { min: 1, max: 15, message: '用户名不超过15个字符,请重新输入',trigger: "blur" },
            { validator: validateAccount, trigger: 'blur' }
            ],
          pwd: [
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, max: 16, message: '长度在6-16位之间',trigger: "blur" },
            {pattern: new RegExp("^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{6,16}$") , message: '密码为6-16位大小写字母+数字组合,请重新输入',trigger: "blur" }
          ],
          confirmPass: [
            { required: true, message: '请输入确认密码', trigger: 'blur' },
            { validator: validateConfirmPass, trigger: 'blur' },
            { min: 6, max: 16, message: '长度在6-16位之间',trigger: "blur" },
            {pattern: new RegExp("^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{6,16}$") , message: '密码为6-16位大小写字母+数字组合,请重新输入',trigger: "blur" }
          ],
          security1:[
            { required: true, message: '请选择密保问题一', trigger: 'change' }
          ],
           security2:[
            { required: true, message: '请选择密保问题二', trigger: 'change' }
          ],
           security3:[
            { required: true, message: '请选择密保问题三', trigger: 'change' }
          ],
          answer1:[
            { required: true, message: '请输入答案', trigger: 'blur' },
            { min: 1, max: 10, message: '答案不可超过10个字符,请重新输入',trigger: "blur" },
          ],
           answer2:[
            { required: true, message: '请输入答案', trigger: 'blur' },
            { min: 1, max: 10, message: '答案不可超过10个字符,请重新输入',trigger: "blur" },
          ],
           answer3:[
            { required: true, message: '请输入答案', trigger: 'blur' },
            { min: 1, max: 10, message: '答案不可超过10个字符,请重新输入',trigger: "blur" },
          ]
        }
      }
    },
    methods:{
      submit() {
        this.$refs.regForm.validate(valid => {
          if (valid) {
            if (this.form.security1 === this.form.security2 || this.form.security1 === this.form.security3 ||  this.form.security2===this.form.security3) {
               this.$message({
                      message:'密保问题不可重复,请重新选择',
                      type: 'error'
                    });
            }
            //姓名唯一性验证
            uniqueValidationName({account:this.form.account}).then(res=>{
              if(res.obj){
                let params = {
                  ...this.form,file:this.fileData.raw
                }
                delete params.confirmPass
                register({...params}).then(res=>{
                  if(res.code == 200){
                    this.$message({
                      message:"注册成功,请登录。",
                      type: 'success'
                    });
                    this.$router.push({ path: '/login' });
                  }else{
                    this.$message({
                      message:res.message,
                      type: 'warning'
                    });
                  }
                })
              }else{
                this.$message({
                  message: res.message,
                  type: 'warning'
                });
              }
            })
          }
        })
      },
    }
  }

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值