vue实现登陆页面开发实践

 更新时间:2022年05月30日 16:03:08   作者:super美少女战士  
本文主要介绍了vue实现登陆页面开发实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

组件使用的是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>

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
    }
  },

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 登陆页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在vue中如何引入外部less文件

    在vue中如何引入外部less文件

    这篇文章主要介绍了在vue中如何引入外部less文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue实现公告栏文字上下滚动效果的示例代码

    vue实现公告栏文字上下滚动效果的示例代码

    这篇文章主要介绍了vue实现公告栏文字上下滚动效果的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Vue.js每天必学之计算属性computed与$watch

    Vue.js每天必学之计算属性computed与$watch

    Vue.js每天必学之计算属性computed与$watch,为大家详细讲解计算属性computed与$watch,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • vue实现给当前元素添加样式,其他元素无样式问题

    vue实现给当前元素添加样式,其他元素无样式问题

    这篇文章主要介绍了vue实现给当前元素添加样式,其他元素无样式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Ant Design Vue 走马灯实现单页多张图片轮播效果

    Ant Design Vue 走马灯实现单页多张图片轮播效果

    这篇文章主要介绍了Ant Design Vue 走马灯实现单页多张图片轮播,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • uniapp中uni-load-more的使用方式

    uniapp中uni-load-more的使用方式

    这篇文章主要介绍了uniapp中uni-load-more的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • vue 代码压缩优化方式

    vue 代码压缩优化方式

    这篇文章主要介绍了vue 代码压缩优化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Vue分页组件实现过程详解

    Vue分页组件实现过程详解

    Web应用程序中资源分页不仅对性能很有帮助,而且从用户体验的角度来说也是非常有用的。在这篇文章中,将了解如何使用Vue创建动态和可用的分页组件
    2022-12-12
  • ElementUI实现在下拉列表里面进行搜索功能详解

    ElementUI实现在下拉列表里面进行搜索功能详解

    有时候需要用到下拉列表全选和搜索,下面这篇文章主要给大家介绍了关于ElementUI实现在下拉列表里面进行搜索功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Vue3优雅的实现跨组件通信的常用方法总结

    Vue3优雅的实现跨组件通信的常用方法总结

    开发中经常会遇到跨组件通信的场景,props 逐层传递的方法实在是太不优雅了,所以今天总结下可以更加简单的跨组件通信的一些方法,文中通过代码实例讲解的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论