Vue2.x ElementUI登录表单中加入验证码倒计时功能

27 篇文章 3 订阅
12 篇文章 0 订阅

Vue2.x ElementUI登录表单中加入验证码倒计时功能

在这里插入图片描述

部分Vue代码如下:

<el-form ref="loginForm" :model="loginForm" status-icon :rules="rules" class="login-form">
  <el-form-item label="" prop="code" class="pr">
     <el-input prop="code" v-model="loginForm.code" placeholder="验证码"></el-input>
     <button @click="getCode(regForm)" class="code-btn" :disabled="!show">
        <span v-show="show">发送验证码</span>
        <span v-show="!show" class="count">{{count}} s</span>
     </button>
  </el-form-item>
</el-form>

部分样式代码:

.pr {
   position: relative;
}
.code-btn {
   width: 100px;
   height: 34px;
   position: absolute;
   top: 3px;
   right: 5px;
   z-index: 222;
   color: #F5A623;
   font-size: 14px;
   border: none;
   border-left: 1px solid #bababa;
   padding-left: 16px;
   background-color: #fff;
}

js代码:

<script>
const TIME_COUNT = 60 // 倒计时的时间
export default {
  data () {
    return {
      loginForm: {
        mobile: '',
        code: ''
      },
      show: true,
      count: '',
      timer: null
    }
  },
  methods: {
    getCode (formData) {
      // 验证码倒计时
      if (!this.timer) {
        this.count = TIME_COUNT
        this.show = false
        this.timer = setInterval(() => {
          if (this.count > 0 && this.count <= TIME_COUNT) {
            this.count--
          } else {
            this.show = true
            clearInterval(this.timer)
            this.timer = null
          }
        }, 1000)
      }
    }
  }
}
</script>

好了,以上即实现了验证码倒计时的功能。我这里并没有把这个方法提取出来做公共方法,其实如果多个页面要用的话,建议还是把它抽出来放在工具函数的js文件里面,然后哪个页面需要就import单个方法使用即可。

如果需要在点击之前验证手机号是否填写,在getCode里面加一个判断就可以了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Vue 2.x ,你可以使用 Vue表单校验插件(如 Vuelidate、vee-validate 等)或者自定义校验规则来为表单绑定校验规则。下面我将演示两种方式来为表单绑定校验规则。 1. 使用 Vuelidate 插件: 首先,安装 Vuelidate 插件: ``` npm install vuelidate --save ``` 然后,在你的组件引入和使用 Vuelidate: ```vue <template> <form @submit.prevent="submitForm"> <input v-model="name" :class="{ 'is-invalid': $v.name.$error }" type="text" placeholder="Name"> <p v-if="!$v.name.required">Name is required</p> <button type="submit">Submit</button> </form> </template> <script> import { required } from 'vuelidate/lib/validators'; export default { data() { return { name: '' }; }, validations: { name: { required } }, methods: { submitForm() { if (this.$v.$invalid) { return; } // 表单验证通过,执行提交操作 } } } </script> ``` 在上述示例,我们使用 `validations` 属性来定义表单的验证规则,`$v` 是 Vuelidate 提供的验证对象,可以通过 `$v.name.$error` 来判断该字段是否有错误,`$v.$invalid` 表示整个表单是否有错误。 2. 自定义校验规则: 你也可以通过自定义校验规则来为表单绑定校验规则。在组件的 `methods` 定义一个自定义的校验方法,并在模板使用该方法进行校验。 ```vue <template> <form @submit.prevent="submitForm"> <input v-model="name" :class="{ 'is-invalid': !isNameValid }" type="text" placeholder="Name"> <p v-if="!isNameValid">Name is required</p> <button type="submit">Submit</button> </form> </template> <script> export default { data() { return { name: '' }; }, computed: { isNameValid() { return this.validateName(this.name); } }, methods: { validateName(value) { return value !== ''; }, submitForm() { if (!this.isNameValid) { return; } // 表单验证通过,执行提交操作 } } } </script> ``` 在上述示例,我们定义了一个 `validateName` 方法来自定义校验规则,然后通过计算属性 `isNameValid` 来判断该字段是否通过校验。 以上是两种在 Vue 2.x 表单绑定校验规则的方法,你可以根据自己的需求选择适合的方式来实现表单验证。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值