vue实现登陆页面开发实践


Posted in Vue.js onMay 30, 2022

组件使用的是vant ui,具体用法可去官网看。

分几个部分考虑,

一、输入框input的校验:1、blur时没有值和格式不符合的逻辑校验
2、限制输入长度逻辑,比如手机号只能11位,验证码只能6位。
二、验证码按钮逻辑
1、不同状态下验证码颜色,文案,是否能点击,是否显示记数需要兼顾。
2、验证码能够正常点击是在手机号格式正确情况下,所以这里要有个监听手机号,一旦格式符合,验证码生效
3、关于计数器的逻辑。

以下会从上面的点开考虑:

一、input的校验没有可说的,记住俩点,一个控制输入长度,一个控制格式。

1、格式校验

handleblurtel(){
      let phoneCodeVerification = /^[1][3,4,5,7,8][0-9]{9}$/;
     if(this.form.tel===''){
       this.errorTxt="请输入手机号码" // 不同情况下错误提示
     }else if(!phoneCodeVerification.test(this.form.tel)){
       this.errorTxt="请输入正确的手机号码格式"
     }else{
       this.errorTxt='' //有效情况记得清空错误提示
       return true
     }
   },
 // 验证码必填和格式验证
   handleblurcode(){
     if(this.form.code===''){
       this.errorTxtcode="请输入验证码"
     }else if(this.form.code.length>0&&this.form.code.length<6){
       this.errorTxtcode="请输入正确的验证码格式"
     }else{
       this.errorTxt=''
       return true
     }
   }

2、长度控制

// 限制输入的字符串长度
    hanldeInputTel(){//手机号长度保证11位
      if(this.form.tel.length>11){
        this.form.tel=this.form.tel.slice(0,11)
      }
    },
    handleInputCode(){//验证码保证6位
      if(this.form.code.length>6){
        this.form.code=this.form.code.slice(0,6)
      }
    },

二、验证码逻辑:

贴下html代码:

<van-field
    v-model="form.code" 
    center
    clearable
    label="短信验证码"
    :error-message="errorTxtcode"
    placeholder="请输入短信验证码"
    @input="handleInputCode"
    @blur="handleblurcode"
    
  >
    <template #button>
      <button size="small" :disabled="btnStatus" :class="btnStyle" type="primary" @click="clickCode">
        <van-count-down :time="time" format="ss" v-if="countFlag===1" @finish="finishDown"></van-count-down>
        <span>{{countTxt}}</span>
      </button>
    </template>
  </van-field>

vue实现登陆页面开发实践

vant-count-down是vant组件自带的计数器用法,直接引入,time是初始化时间数,比如60s,1min,format是时间格式:时分秒,秒等。
@finish是自带的方法,具体api可去官方网站看,这里不做介绍。

1、初始化按钮状态:

data(){
    return {
      form:{
        tel:'',
        code:''
      },
      errorTxt:'',// 手机号错误提示
      errorTxtcode:'',// 验证码错误提示
      btnStatus:true,// 按钮不可点击
       btnStyle: 'nomalStyle',// 促初始化按钮样式
       time:60*1000,// 时间数
       countTxt:'发送验证码',// 初始化按钮文案
       countFlag:0//0:展示文案,1;展示计数,开始计时
    }
  
  },

1、开始计时:
按钮状态不可点击状态btnStatus,按钮样式:btnStyle,开始计数:countFlag

// 点击按钮开始计时
    clickCode(){
      this.btnStatus=true
      this.btnStyle=`countdown`
      this.countFlag=1//开始计时
      this.countTxt=''//文案为空
    },

2、倒计时结束后:需要修改这些参数
按钮可继续点击btnStatus,显示文案countFlag,c文案内容countTxt

//  倒计时结束
    finishDown(){
       this.btnStyle=`canClick`
       this.btnStatus=false
       this.countTxt='重新获取'
       this.countFlag=0
    },

3、按钮状态何时触发:
手机号符合格式情况下,watch里面监听手机号

watch:{
   form: {
      handler() {
        if(/^[1][3,4,5,7,8][0-9]{9}$/.test(this.form.tel)){
         this.btnStyle = 'canClick'
          this.btnStatus=false
        }else{
         this.btnStatus=true
        }
      },
      immediate: true,
      deep: true
    }
  },

vue实现登陆页面开发实践

vue实现登陆页面开发实践

vue实现登陆页面开发实践

4、最后点击提交的简单写法:

// 提交用户信息
    sumbit(){
      let telStatus=this.handleblurtel()
      let codeStatus=this.handleblurcode()
      if(telStatus&&codeStatus){
        this.axios.get({}).then(res=>{
          console.log('提交成功')
          // 把后端会的token存入前端缓存
          localStorage.setItem('token',res.data.toekn)
          // 跳转到首页
          this.$router.push({path:'/'})
        })
      }
    },

1,2,3步可以一步一步来,这样思路就会清晰,不然会觉得验证码一会儿这样显示一会儿那样显示,就会很混乱,所以先把单个功能开发完,最后写按钮变化前提条件 这样思路就很明确。

样式放在文末:

.nomalStyle {
    background: #EAEEFD;
    color: #5E6679;
  }
  button {
      width: 161px;
      height: 61px;
      border-radius: 31px;
      line-height: 61px;
      font-size: 24px;
      text-align: center;
    }
    .canClick {
    background-color: #3E64D4;
    color: #FFFFFF;
  }
   .countdown {
    background: #EAEEFD;
    color: #3E64D4
  }

到此这篇关于vue实现登陆页面开发实践的文章就介绍到这了!

Vue.js 相关文章推荐
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
vue 递归组件的简单使用示例
Jan 14 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
Vue.Draggable实现交换位置
Apr 07 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
vue router 动态路由清除方式
May 25 #Vue.js
vue如何清除浏览器历史栈
May 25 #Vue.js
vue3不同环境下实现配置代理
May 25 #Vue.js
vue使用element-ui按需引入
May 20 #Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 #Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 #Vue.js
Vue组件化(ref,props, mixin,.插件)详解
You might like
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
JavaScript 基础篇(一)
2012/03/30 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
图解js图片轮播效果
2015/12/20 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python进程间通信之共享内存详解
2017/10/30 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
PHP经典面试题
2016/09/03 面试题
火锅店创业计划书范文
2014/02/02 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书