1,定时器执行的函数
var SMSbtnTiming = function () { if (secondCount === 0) { $self.addClass('enabled').removeClass('disabled'); $self.val('重新发送'); $self.removeAttr('disabled'); if (intervalHook) { clearInterval(intervalHook); intervalHook = null; } } else { $self.val('重新发送(' + secondCount + 's)'); secondCount--; } };
2,发送请求,并且操作成功后才执行倒计时
$.ajax({ url: changeBindServer + action, type: 'GET', dataType: 'jsonp', data: {mobile: mobile}, success: function (data) { if (data.result) { $spanHint.removeClass(CodeErrorMsg_class); $spanHint.show(); $spanHint.text('发送成功'); $self.addClass('disabled').removeClass('enabled'); $self.val('重新发送(60s)'); $self[0].disabled = 'disabled';//禁止按钮的点击默认动作 //$ChanjetNewCodeInput[0].disabled = "disabled"; intervalHook = setInterval(SMSbtnTiming, 1000); enAbleNextBtn($inputTF); $inputTF.removeAttr('disabled'); $inputTF.focus(); } else { console.log(data); var date = new Date(); console.log(date); if (data.errorMessage.indexOf('绑定') != -1) { setOldMobileMsg($oldMobileError, data.errorMessage); } else { $spanHint.text(data.errorMessage);//数量超出限制 $spanHint.addClass(CodeErrorMsg_class); $spanHint.show(); } //setTimeout(restoreSpanHit, 4000); } setTimeout(restoreSpanHit, 5000); } });
3,定时器方法中的this指什么?
js代码:
var timing2= function () { console.log(this); console.log('timing'); clearInterval(a); }; a=setInterval(timing2, 2000);
运行结果:
代码改为:
var obj={ time2: function () { var timing2= function () { console.log(this); console.log('timing'); clearInterval(a); }; a=setInterval(timing2, 2000); } }; obj.time2();
结果也一样
解决方法:
抽取出来一个方法:
SMSbtnTimingCommon: function (me) {//定时器的方法 //me._data=me._data||{}; //console.log(me); var $self = $('#getAuthCodeBtn'); if (me._data.bind.secondCount === 0) { var intervalHookTmp = me._data.bind.intervalHook; if (intervalHookTmp) { console.log('me._data.intervalHook:' + intervalHookTmp); clearInterval(intervalHookTmp); console.log('me._data.intervalHook:' + intervalHookTmp); console.log('stop timing'); me._data.bind.intervalHook = null; } $self.html('获取验证码'); sendCodeBtn.enable($self); } else { //console.log(me._data.secondCount); $self.html('重新获取(' + me._data.bind.secondCount + ')'); me._data.bind.secondCount = me._data.bind.secondCount - 1; } }
调用:
var SMSbtnTiming= function () { me.SMSbtnTimingCommon(me); };
相关推荐
JS点击按钮自动倒计时代码,示例一:要求用户阅读完条款内容才能激活按钮;示例二:要求用户激活短信通道向用户手机发送验证码。
3.返回发送状态,如果发送成功,实现等待倒计时,锁定按钮处于禁用状态。 同时把倒计时数据写入 cookie 防止页面被刷新 4.倒计时的实现不采用全局变量,避免污染全局,或被其他函数修改。 5.按钮点击时先判断 ...
120秒手机短信按钮倒计时 */ exports.sendmessage = function (name) { var second = 120; $(name).attr("disabled", true); var color = $(name).css('background-color'); $(name).attr("style", ...
一句话搞定发送验证码倒计时
实现自定义时间 倒计时 各处都会用到的接收短信按钮 抽空封装了下 made by jxn
一般原理是“当点击发送按钮时,发送ajax请求到服务器发送短信验证码,成功则把发送按钮设置为不可点击,并且调用定时器,按钮显示倒计时”。如果就这样不对倒计时存储做处理,那么当刷新页面,会出现倒计时失效,...
1.组件中定义两个变量,分别用于控制按钮是否可以点击(countDown)和按钮上的倒计时数字(countDownTime): countDown = false; countDowmTime = 60; // 这里设置倒计时为60S showButtonText = '发送短信验证码'...
比如,一些网站上的手机短信认证的功能,有类似实现点击按钮后,倒计时60秒才能再次点击发送的效果。 此例子用Javascript实现点击按钮后,倒计时60秒才能再次点击发送验证码的功能。 例子1:Javascript 实现 点击...
最近项目开发中遇到这样的功能:1....当接收短信失败后,倒计时停止,可点击重新发送短信.3.点击的元素支持一般标签和input标签。看似很复杂其实实现代码很简单,下面小编给大家分享下实现代码,需要的朋友参考下吧
×实现短信验证码倒计时效果,分享给大家,具体如下: 场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时,界面会有倒计时提示,这此期间按钮不可点击。当倒计时结束时,按钮恢复。 实现代码 val ...
当用户想要获取验证码时,就点击免费获取验证码 ,然后开始倒计时,倒计时期间按钮文字为剩余时间x秒,且不可按状态,倒计时结束后,按钮更改为点击重新发送,下面给大家分享js短信验证码倒计时实现代码
主要是实现异步手机发送短信成功之后在ajax的success回调中实现将发送按钮置灰并倒计时,刚开始一直报js错误,问题可能出在于调用ajax之后this被更新,随意在这之前先把this对象赋给一个变量就没问题 按钮倒计时代码...
JS点击按钮自动倒计时代码,示例一:要求用户阅读完条款内容才能激活按钮;示例二:要求用户激活短信通道向用户手机发送验证码。
JS点击按钮自动倒计时代码,示例一:要求用户阅读完条款内容才能激活按钮;示例二:要求用户激活短信通道向用户手机发送验证码。
在开发是经常会遇到获取短信验证码,然后获取验证码后需要等待n秒倒计时,这时是不能再次发送短信请求的,这是需要一个倒计时程序,本文给大家分享了实现此功能的代码,需要的朋友参考下