vue获取验证码倒计时,自定义组件点击事件不生效的问题

说明:部分组件使用的是element-ui

子组件

<template>
  <div class="count-down">
    <el-button type="primary" size="small" style="width:80px;" :disabled="disabled || time > 0">
      {{ text }}
    </el-button>
  </div>
</template>

<script type="text/javascript">
export default {
  data() {
    return {
      time: 0
    };
  },
  props: {
    second: {
      type: Number,
      default: 5
    },
    disabled: {
      type: Boolean,
      default: false
    }
  },
  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" : "获取验证码";
    }
  }
};
</script>

父组件

<template>
    <div>
        <count-down :disabled="disabled" @click="send" ref="btn"></count-down>
    </div>
</template>    

export default {
        data () {
                return {
                    disabled: false
                }
        },
        methods: {
                send: function () {
                    this.disabled = true;
                    setTimeout(this.sended, 1000);
                },
                 sended() {
                    this.$refs.btn.run();
                    this.disabled = false;
                }
        }
}
               

这样写的时候,父组件的click事件是不生效的,在给某个组件监听一个原生事件的时候可以使用v-on的修饰符.native

<count-down :disabled="disabled" @click.native="GetVerifyCode" ref="countDownBtn"></count-down>

这样点击事件就生效了

原文地址:https://www.cnblogs.com/rongjuan/p/8124761.html

时间: 2024-08-28 01:16:57

vue获取验证码倒计时,自定义组件点击事件不生效的问题的相关文章

ThinkPHP tp Codeigniter ci 微信开发 控制器代码 示例 实例 模拟http请求 获取acces_token 创建自定义菜单 点击事件 转多客服

0 public function index(){ //echo $this->getAccessToken(); //$this->selectMenu(); //$this->creatMenu(); //$this->deleteMenu(); /* //用于验证的代码 勿动!! $tmpArr = array('xcjr2015', $_GET["timestamp"], $_GET["nonce"]); sort($tmpArr,

Andorid实现点击获取验证码倒计时效果

这篇文章主要介绍了Andorid实现点击获取验证码倒计时效果,这种效果大家经常遇到,想知道如何实现的,请阅读本文 我们在开发中经常用到倒计时的功能,比如发送验证码后,倒计时60s再进行验证码的获取,为了方便以后使用,这里做个记录,讲讲倒计时器的实现. 1.先进行倒计时工具类的封装 1 public class CountDownTimerUtils extends CountDownTimer { 2 private TextView mTextView; 3 4 /** 5 * @param

获取验证码倒计时优化 页面刷新实时倒计时

现在很多页面是需要获取验证码的,但是相信很多页面是没有做这样的优化的,比如下面这个场景: 现在访问一个注册页面,页面有一个填写手机号,获取验证码的按钮,点击获取验证码按钮之后,按钮变成灰色,然后是60倒计时效果.在60S内我无法再次点击获取验证码按钮.因为按钮是灰色的,不可点击状态. 但是,如果在倒计时任然进行时我刷新一下页面,一般的页面就会全部刷新,包括倒计时效果也没有了,按钮恢复到这最初可点击状态,这其实是不符合逻辑的.按正常逻辑是,页面任然倒计时,如果我刷新页面,倒计时任然存在,并且按钮不

对安卓获取验证码倒计时60秒Button按钮的简单封装

鉴于经常在注册获取验证码时候需要一个倒计时按钮觉得很麻烦,抽点时间写了一个TimeButton 键鼠下特性, TimeButton使用的时候跟普通Button一样没有冲突, TimeButton在倒计时的时候返回了如果没有超过剩下的时间再次进入会继续跑时哦, TimeButton里面完成了按钮的点击显示和倒计时逻辑, TimeButton在activity销毁后也会销毁不会像线程一样还在后台跑, TimeButton的显示文字和倒计时都可以自行设置当然也有默认的, 原创地址 http://wri

jq点击事件不生效,效果只闪现一次又立马消失的原因?

出现的问题:jq点击事件不生效,点击的时候效果实现但又立马消失,页面重新刷新了一次 可能出现的原因: a标签href属性的原因,虽然点击事件生效,但页面又刷新了一次,所以没有效果,只闪了一次 解决方案:阻止a标签跳转,给a标签的href属性加  javascript:; ,即可 <a href="javascript:;" ></a> 原文地址:https://www.cnblogs.com/6531792-j/p/10778269.html

js点击按钮获取验证码倒计时

//发送验证码倒计时 var clock = ''; var nums = 60; var btn; $("#btnGetVerCode").click(function () { var flag = true; var phoneNum = $("#txtPhoneNum").val(); if (phoneNum.length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(14[0-9

获取验证码倒计时

<!doctype html><html><head> <meta charset="utf-8"> <title>广告主注册</title> <link href="__CSS__/index.css" rel="stylesheet" /> <script src="__JS__/jquery-1.9.1.min.js"><

前端学习——ionic/AngularJs——获取验证码倒计时按钮

 按钮功能为:点击"获取验证码"--按钮不可用-设置倒计时-60秒后重新获取. 代码借鉴于:http://plnkr.co/edit/Swj82MpJSix3a47jZRHP?p=preview 主要实现原理:点击后,设置一个$interval,每一秒更改一次剩余时间,并依赖Angular数据绑定实时显示在页面中.设置一个$timeout,60秒后将按钮初始化到可用状态. 实现代码: (1)js代码,设置成一个directive以便多次调用. angular.module('winwi

React中发送验证码 倒计时效果组件编写

(1)可以通过使用"react-timer-mixin"插件实现倒计时效果,原理同下面的思路一样此处不在详细解说 (2)自己用原生定时器方法实现 1 import React,{Component} from 'react'; 2 import {Button } from 'antd-mobile'; 3 import PropTypes from 'prop-types'; 4 class SendVerifyCode extends Component{ 5 constructo