zoukankan      html  css  js  c++  java
  • 关于注册页面的总结

      做前端无可避免的需要写注册和登录页面。今天先总结一下注册页面的一些常用元素

    1.form

      注册表单提交使用。注册页面一般使用弹窗或单独的页面,表单涵盖所需的填写项,样式可在涵盖了全部项的基础上进行发挥扩展。

    2.参数校验和正则

      在表单中,需要进行校验,常见的就是名称密码手机、验证码、手机验证码。

      关于校验,前边的一篇正则中有提到常用的正则,可以配合form的rule进行校验。这里着重说一下前端生成验证码。

    3.验证码

      原理很简单,这里使用最初的字母数字校验。其他如数学计算、点击、滑动,等以后有时间再详细研究(先立个flag,因为最近实在是太忙了,仿佛头发都快要掉光了)。

      涉及的主要思想就是随机数,并利用随机来确定是大写还是小写。代码如下:

     1 <template>
     2   <div><input type="button"  @click="createCode"  class="verification" v-model="checkCode"/></div>
     3 </template>
     4 
     5 <script>
     6 export default {
     7   data () {
     8     return {
     9       // 配置项:长度、范围
    10       codeLength: 4,
    11       codeRandom: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    12         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
    13         'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
    14       checkCode: ''
    15     }
    16   },
    17   methods: {
    18     createCode () {
    19       let code = ''
    20       let index
    21       let codeSlice
    22       for (let i = 0; i < this.codeLength; i++) {
    23         // 取得随机数的索引(0~35)
    24         index = Math.floor(Math.random() * 36)
    25         // 根据索引取得随机数加到code上
    26         if (Math.random() * 2 > 1) {
    27           codeSlice = this.codeRandom[index].toLowerCase()
    28         } else {
    29           codeSlice = this.codeRandom[index]
    30         }
    31         code += codeSlice
    32       }
    33       // 把code值赋给验证码
    34       this.checkCode = code
    35     }
    36   },
    37   mounted () {
    38     this.createCode()
    39   }
    40 }
    41 </script>
    42 <style lang='scss' scoped>
    43 .idtc_input{
    44         font-family: 'Exo 2', sans-serif;
    45     border: 1px solid #fff;
    46     color: #fff;
    47     outline: none;
    48     border-radius: 12px;
    49     letter-spacing: 1px;
    50     font-size: 17px;
    51     font-weight: normal;
    52         background-color: rgba(82, 56, 76, 0.15);
    53         padding: 5px 0 5px 10px;
    54     margin-left: 30px;
    55     height: 30px;
    56     margin-top: 25px;
    57     border: 1px solid #e6e6e6;
    58 }
    59 .verification{
    60     border-radius: 12px;
    61     width:100%;
    62     letter-spacing:10px;
    63     /* margin-left: 50px; */
    64     height: 40px;
    65     /* transform: translate(-15px,0); */
    66     background: linear-gradient(to top right, #a5a5a2 0%, #f5f5f5 55%, #cecdc0 100%);
    67     cursor: pointer;
    68 }
    69 .captcha{
    70     height: 50px;
    71     text-align: justify;
    72 }
    73 </style>

      这里是用的vue。

    4.密码强度校验

      目前暂时没有单独抽出组件,还是因为时间的问题,下次再进行抽取。

      基本思想是根据密码的包含字符的种类数进行积分式的计算。更复杂的算法以后会考虑。

      代码:

     1 // html
     2 <el-form-item prop="password">
     3           <el-input v-model="registerForm.password" placeholder="密码(6-20位,数字/字母/符号及其组合)" type="password" autocomplete="off" show-password></el-input>
     4           <el-progress :percentage="pwdLevel" :format="format" :color="levelColor"></el-progress>
     5         </el-form-item>
     6 <el-form-item>
     7           <el-row>
     8             <el-col :span="12"><el-input placeholder="短信验证码" v-model="registerForm.msgCode"></el-input></el-col>
     9             <el-col :span="4">&nbsp;</el-col>
    10             <el-col :span="8">
    11               <el-button style="100%" type="primary" :disabled="sendDisable" @click="sendMsg">{{sendText}}</el-button>
    12             </el-col>
    13           </el-row>
    14         </el-form-item>
    15 // 部分data
    16 pwdLevel: 0,
    17       levelColor: '#f56c6c',
    18       checkCode: '',
    19       sendDisable: false,
    20       sendText: '获取验证码',
    21       timeSpace: 60,
    22       agree: false,
    23       regPaperShow: false,
    24       nameReg: /^[u4E00-u9FA5a-zA-Z0-9_]{3,20}$/,
    25       pdwReg: /^[a-zA-Z0-9`~!@#$^&*()=|{}':;',\[].<>\/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]{6,20}$/,
    26       phoneReg: /^1[34578]d{9}$/
    27 
    28 methods: {
    29     format (pct) {
    30       // 做一个密码非法的标志--1--也可以用form校验
    31       return pct > 80 ? '密码非常安全' : pct > 60 ? '密码安全' : pct > 40 ? '密码一般' : pct === 0 ? '' : pct === 1 ? '密码不满足要求' : '密码危险'
    32     },
    33     checkPwdLevel (val) {
    34       this.pwdLevel = 0
    35       if (this.pdwReg.test(val)) {
    36         // 采用简单的组合方式校验,暂不校验复杂度相似性等
    37         if (/[a-z]/.test(val)) this.pwdLevel += 25
    38         if (/[A-Z]/.test(val)) this.pwdLevel += 25
    39         if (/[0-9]/.test(val)) this.pwdLevel += 25
    40         if (/[`~!@#$^&*()=|{}':;',\[].<>\/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]/.test(val)) this.pwdLevel += 25
    41         switch (this.pwdLevel) {
    42           case 0:
    43           case 25:
    44             this.levelColor = 'red'
    45             break
    46           case 50:
    47             this.levelColor = '#e6a23c'
    48             break
    49           case 75:
    50             this.levelColor = '#1989fa'
    51             break
    52           case 100:
    53             this.levelColor = '#5cb87a'
    54             break
    55           default:
    56             this.levelColor = '#e6a23c'
    57             break
    58         }
    59       }
    60     },
    61     sendMsg () {
    62       this.sendDisable = true
    63       this.timeSpace = 60
    64       this.sendText = this.timeSpace
    65       const timeInterval = setInterval(() => {
    66         this.timeSpace--
    67         this.sendText = this.timeSpace
    68         if (this.timeSpace === 0) {
    69           this.sendDisable = false
    70           this.sendText = '获取验证码'
    71           clearInterval(timeInterval)
    72         }
    73       }, 1000)
    74     }
    75   }

      同样是使用的vue,思路就是使用el的进度条组件,使用正则来确认密码复杂度并进行相加,最后映射到进度上,并使用相关提示文字进行密码强度的校验。

    5.手机验证码倒计时

      代码片段在4中,思想就是使用disabled属性和定时器进行计时和控制。

      这里只介绍思想和关键的代码逻辑供学习探讨,具体代码可参看个人git库:

    https://github.com/MRlijiawei/components/tree/master/vue%E7%BB%84%E4%BB%B6/register/user

      好了,工地忙,老板让半个月一个人造一个涵盖门户、登录注册、课程、资源、交易、个人中心、资源预览学习下载购买、区块链虚拟货币、充值、任务积分、各类型教育等页面的系统出来,人都要疯掉了,仿佛在开玩笑一样呢,好了不说了,滚一边搬砖去了!

  • 相关阅读:
    Linux打包&压缩 tar,gzip,bzip2
    Linux递归计算目录md5
    fetion飞信登录异常,错误码10033201、10033202
    Linuxscp如何实现nohup &后台启动
    Linux显示日文4字节半角字符
    Linux目录配置的依据FHS
    Linux解决中文乱码问题: vim/pdf/gedit
    ery validator addMethod 方法的使用
    查询今天发帖量 sql
    JAVA反射机制
  • 原文地址:https://www.cnblogs.com/ljwsyt/p/10980767.html
Copyright © 2011-2022 走看看