zoukankan      html  css  js  c++  java
  • vue中 确认密码/重复输入/再次输入密码的校验(基于iviewUI框架)

    首先需要效果

    (1)正常效果

    (2)输入有误时

    (3)格式正确,但两次密码不一致时

    (4)校验通过

    代码部分

    <div class="changeMain">
          <p class="changeTips">密码设置规则</p>
          <p class="changeTips changeRules">6-16位字符,同时包括数字、大小写字母和特殊字符四种组合; 特殊字符需在“~ @ # $ % * _ - + = : , . ?”范围内选择。</p>
          <Form ref="formValidate" class="changeForm" :model="formValidate" :rules="ruleValidate" :label-width="80">
             <FormItem label="新密码" prop="password" :label-width="100">
                 <Input v-model="formValidate.password" class="changeInput" type="password" placeholder="请输入密码"></Input>
                 <Icon type="ios-checkmark-circle" v-if="changeFlag == 1" color="#35B449"/>
                 <Icon type="md-close-circle" v-else-if="changeFlag == 2" color="#f00"/>
             </FormItem>
             <FormItem label="重复密码" prop="againPassword" :label-width="100">
                 <Input v-model="formValidate.againPassword" class="changeInput" type="password" placeholder="请输入密码"></Input>
                 <Icon type="ios-checkmark-circle" v-if="changeAgainFlag == 1" color="#35B449"/>
                 <Icon type="md-close-circle" v-else-if="changeAgainFlag == 2" color="#f00"/>
             </FormItem>
             <FormItem class="changeBtnbox">
                <Button type="primary">确定</Button>
                <Button style="margin-left: 30px">取消</Button>
            </FormItem>
         </Form>
        </div>

    逻辑部分

    export default {
      data () {
        // 密码验证
        const pwdCheck = async(rule, value, callback) => {
          let reg = /^(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~@#$%*-+=:,\?[]{}]).{6,16}$/
          if (value.length < 6) {
            this.changeFlag = 2;
            return callback(new Error('密码不能少于6位!'));
          } else if (value.length > 16) {
            this.changeFlag = 2;
            return callback(new Error('密码最长不能超过16位!'));
          } else if (!reg.test(value)) {
            this.changeFlag = 2;
            return callback(new Error('密码输入有误,请检查格式是否正确!'));
          } else {
            this.changeFlag = 1;
            callback()
          }
        }
        // 重复密码验证
        const pwdAgainCheck = async(rule, value, callback) => {
          if (value.length < 1) {
            this.changeAgainFlag = 2;
            return callback(new Error('重复密码不能为空!'));
          } else if(this.formValidate.password != this.formValidate.againPassword){
            this.changeAgainFlag = 2;
            return callback(new Error('两次输入密码不一致!'));
          }else{
            this.changeAgainFlag = 1;
            callback()
          }
        };
        return {
          changeFlag: 0,
          changeAgainFlag: 0,
          formValidate: {
              password: '',
              againPassword: ''
          },
          ruleValidate: {
              password: [
                  { required: true, validator: pwdCheck, trigger: 'blur' }
              ],
              againPassword: [
                  { required: true, validator: pwdAgainCheck, trigger: 'blur' }
              ]
          }
        }
      },
      methods: {
          handleSubmit (name) {
              this.$refs[name].validate((valid) => {
                  if (valid) {
                      this.$Message.success('Success!');
                  } else {
                      this.$Message.error('Fail!');
                  }
              })
          },
          handleReset (name) {
              this.$refs[name].resetFields();
          }
      }
    }
  • 相关阅读:
    STL源码剖析之_allocate函数
    PAT 1018. Public Bike Management
    PAT 1016. Phone Bills
    PAT 1012. The Best Rank
    PAT 1014. Waiting in Line
    PAT 1026. Table Tennis
    PAT 1017. Queueing at Bank
    STL源码剖析之list的sort函数实现
    吃到鸡蛋好吃,看看是哪只母鸡下的蛋:好用的Sqlite3
    cJSON
  • 原文地址:https://www.cnblogs.com/lxn2/p/13073130.html
Copyright © 2011-2022 走看看