html - vue.js 验证码倒计时怎么做?

查看:111
本文介绍了html - vue.js 验证码倒计时怎么做?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<div class="weui-cell ">
                <div class="weui-cell__hd">
                    <label class="weui-label">验证码</label>
                </div>
                <div class="weui-cell__bd">
                    <input class="weui-input code" type="number" placeholder="请输入验证码" v-model="yzm"/>
                </div>
                <button class="weui-btn weui-btn_mini weui-btn_default" v-on:click="gain">获取验证码</button>
</div>

 methods: {
            gain: function(){
                validate.verifyTel((this.phone).toString());
                this.$http.post('/send_sms',{tel: this.phone},{timeout: 7000}).then((response) => {
                      //成功后,倒计时60秒
                      
                      
                      
                      }, (response) => {
                      alert(response)
                });
            },
           
        }
        
        
        

解决方案

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
    <div id="app">
        <timer-btn class="btn btn-default" @click="send" :disabled="disabled" v-ref:btn :second="5"></timer-btn>
    </div>

    <template id="timerBtn">
        <button :disabled="disabled || time > 0">
            {{ text }}
        </button>
    </template>

    <script src="http://cdn.bootcss.com/vue/1.0.17/vue.min.js"></script>

    <script>
        'use strict';

        Vue.component('timerBtn', {
            template: '#timerBtn',
            props: {
                second: {
                    type: Number,
                    default: 60
                },
                disabled: {
                    type: Boolean,
                    default: false
                }
            },
            data: function () {
                return {
                    time: 0
                }
            },
            methods: {
                run: function () {
                    this.time = this.second
                    this.timer()
                },
                timer: function () {
                    if (this.time > 0) {
                        this.time--;
                        setTimeout(this.timer, 1000);
                    }
                }
            },
            computed: {
                text: function () {
                    return this.time > 0 ? this.time + 's 后重新获取' : '获取验证码';
                }
            }
        });

        new Vue({
            el: '#app',
            data: function () {
                return {
                    disabled: false
                }
            },
            methods: {
                send: function () {
                    this.disabled = true;
                    setTimeout(this.sended, 2000);
                },
                sended() {
                    this.$refs.btn.run();
                    this.disabled = false;
                }
            }
        })
    </script>
</body>
</html>

这篇关于html - vue.js 验证码倒计时怎么做?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆