当前位置:首页 > JavaScript > 正文内容

AngularJS动态特效之验证码按钮倒计时

flowstone8年前 (2017-11-11)JavaScript477

功能需求

当用户注册或者找回密码时,输入注册的手机号发送验证码到手机中,点击发送验证码按钮倒计时这个功能是如何实现呢?

效果如下

表单代码如下

<div class="signup" ng-app="signupApp" ng-controller="signupCtrl">
    <div class="col-md-9 signupbox">
        <form id="signupForm" action="customer_regist.action" method="post" class="form col-md-6">
            <div class="form-group">
                <label for="inputaccount" class="col-sm-3 control-label">
                    <b>*</b>验证码</label>
                <div class="col-sm-5">
                    <input type="text" name="checkcode" class="form-control" id="inputaccount" placeholder="请输入验证码">
                </div>
                <div class="col-sm-3 song">
                    <button type="button" id="checkCode" class="btn btn-default" ng-bind="checkcodemsg" ng-click="getCheckCode()">获取验证码</button>
                </div>
            </div>
        <form>
    </div>
 </div>

JS代码如下

<!--验证码倒计时-->
<script type="text/javascript">
    angular.module("signupApp", [])
        .controller("signupCtrl", ["$scope", function ($scope) {
            //按钮初始化的名字
            $scope.checkcodemsg = "获取验证码";
            //倒计时变量,默认60秒
            var second = 5;
            //定时器对象
            var secondInterval = undefined;
            //是否允许发送验证码的标识 
            var enableFlag = true;
            //获取验证码点击事件
            $scope.getCheckCode = function () {
                //允许发送验证码
                if (enableFlag) {
                        //发送验证码的标识为false,在重新发送时间里不允许再发送
                        enableFlag = false;
                        //禁止按钮
                        $("#checkCode").attr("disabled","true");
                        //开启定时器
                            secondInterval = window.setInterval(function () {
                            //如果时间为0秒时
                            if (second === 0) {
                                //重新初始化按钮
                                $scope.checkcodemsg = "获取验证码";
                                //强制更新视图
                                $scope.$digest();
                                //清除定时器
                                window.clearInterval(secondInterval);
                                //清空变量
                                secondInterval = undefined;
                                //重置秒数
                                second = 5;
                                //重置验证码标识 
                                enableFlag = true;
                                //按钮可用
                                $("#checkCode").removeAttr("disabled");
                            } else {
                                //发送验证码
                                $scope.checkcodemsg = "重新发送("+second + ')秒';
                                //强制更新视图
                                $scope.$digest();
                                //秒数倒计时
                                second--;
                            }
                        }, 1000);
                } 
            };
        }]);
</script>


扫描二维码推送至手机访问。

版权声明:本文由薛尧的博客发布,如需转载请注明出处。

本文链接:https://flowstone.sourceforge.io/?id=19

分享给朋友:

相关文章

React Ant框架中分页的快速使用

使用环境ReactAnt DesignSpringBootSpring Data JPA前端页面首先,我们要查看Ant官方文档,一般涉及到分页的页面都是列表查询,在表格组件中找到API,可以从API中看到使用方法,查看文档后,编写代码如下&...

React中useState如何给对象中的某一个属性赋值

问题描述在React文件中使用了useState,定义了查询条件,这个查询条件实际上是一个对象,如下所示const [requestParam, setRequestParam] = useState...

JS中绑定方法加括号和不加括号的区别

问题描述在React开发中,遇到一个页面不停调用接口问题,如下图所示 问题解决查找哪里调用了接口,最后在刷新按钮上找到了问题所在,如下所示<Button     type="...

React中如何实现文件上传功能

场景描述在前端页面中,经常会使用到文件上传功能,我们如何实现上传功能呢?开发环境React ^16.12.0Ant Design ^5.0.12SpringBoot 2.3.0页面实现文件上传首先我们要用到Ant框架中自带的上传组件Uplo...

React中如何实现文件下载功能

场景描述在前端页面中,经常会使用到文件下载功能,我们如何实现下载功能呢?开发环境React ^16.12.0Ant Design ^5.0.12SpringBoot 2.3.0问题分析首先,想到下载,肯定要涉及文件流(字节流),后端接口返回...

Ant Design中使用Upload上传组件如何自定义文件列表展示位置

软件环境macOS Big Sur 11.1React 16.12.0Ant Design 4.10.0实际效果现有一个需求,是上传文件,点击浏览文件按钮,选中文件后,在按钮的上方显示,上传的文件列表,如下图所示 当前效果目前使用...