JavaScript在控件上添加倒计时功能的实现代码


Posted in Javascript onJuly 04, 2017

一.概述

在有些 报表 需求中,需要为控件添加倒计时功能,限制到某一个时间点后能进行一项操作或不能进行某项操作,比如查询,导出功能等等,又需要人性化地显示还有多少时间,即倒计时功能,比如下图中我们限制这个报表在每天10点后才能查询 

JavaScript在控件上添加倒计时功能的实现代码

JavaScript在控件上添加倒计时功能的实现代码

当倒计时结束的时候,查询功能可用 

JavaScript在控件上添加倒计时功能的实现代码

这种功能如何实现的呢

二.实现思路

主要原理是利用控件的setEnable(true)/setEnable(false)来进行设置控件的可用与不可用状态,在获取时间的过程中,需要利用到JS中的获取时间,利用JS的定时器函数setInterval(function(){},time)来进行定时取得倒时时,并判断倒计时是否结束。

三 .实现过程

1、修改模板

以自带的gettingstarted.cpt模板为例,设置初始化时查询按钮不可用,如下图  

JavaScript在控件上添加倒计时功能的实现代码

2、添加倒计时控制功能

为了简化控制流程,把JS代码直接写在查询按钮的初始化后事件中,如下图

JavaScript在控件上添加倒计时功能的实现代码

代码如下:

var h= 10 ; //限制几点可查询 
 var m= 00 ; //限制几分可查询 
 var s= 00 ; //限制几秒可查询 
 //格式化时间 
 function timeToString(a){ 
  //小时 
  var s= '还有' 
  s+=parseInt(a/ 3600 )+ '时' ; 
  //分 
  s+=parseInt(a % 3600 / 60 )+ '分' ; 
  //秒 
  s+=parseInt(a % 60 )+ '秒可查' ; 
  return s; 
 } 
 var date1= new Date(); 
 var date2= new Date(); 
 //设置预置可查时间 
 date1.setHours(h); 
 date1.setMinutes(m); 
 date1.setSeconds(s); 
 //比如时间 
 var d=(date1-date2)/ 1000 ; 
 //如果初始化时可用,就启用按钮 
 if (d< 0 ){ 
  this .setValue( '查询' ); 
  this .setEnable( true ); 
 } else {  
  var btn= this ;  
  //显示倒计时时间 
  btn.setValue(timeToString(d)); 
  //设置不可用 
  btn.setEnable( false );  
  //定时器函数 
  setInterval(function(){ 
   //重新设置时间 
   date1= new Date();  
   date2= new Date(); 
   date1.setHours(h); 
   date1.setMinutes(m); 
   date1.setSeconds(s); 
   //重新当前时间与设定时间的时间差 
   d=(date1-date2)/ 1000 ; 
   if (d< 0 ){ 
   btn.setValue( '查询' ); 
   btn.setEnable( true ); 
   } else {  
   btn.setValue(timeToString(d)); 
   btn.setEnable( false );  
   } 
  }, 1000 ); 
 }

以上所述是小编给大家介绍的JavaScript在控件上添加倒计时功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
基于OL2实现百度地图ABCD marker的效果
Oct 01 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
Node.js中的require.resolve方法使用简介
Apr 23 Javascript
Vue+axios 实现http拦截及路由拦截实例
Apr 25 Javascript
浅谈React Native 中组件的生命周期
Sep 08 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 Javascript
浅谈super-vuex使用体验
Jun 25 Javascript
vue中watch和computed的区别与使用方法
Aug 23 Javascript
JavaScript异步上传图片文件的实例代码
Jul 04 #Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 #Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 #Javascript
详解vue-cli 脚手架项目-package.json
Jul 04 #Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
Jul 04 #Javascript
详解node如何让一个端口同时支持https与http
Jul 04 #Javascript
Angular 2父子组件之间共享服务通信的实现
Jul 04 #Javascript
You might like
php获取mysql版本的几种方法小结
2008/03/25 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
checkbox使用示例
2013/08/23 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
在Python中定义和使用抽象类的方法
2016/06/30 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python设置环境变量的作用整理
2020/02/17 Python
浅谈python锁与死锁问题
2020/08/14 Python
阿里旅行:飞猪
2017/01/05 全球购物
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
银行职员自我鉴定
2014/04/20 职场文书
社区反邪教工作方案
2014/06/16 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
蜗居观后感
2015/06/11 职场文书
在职证明书模板
2015/06/15 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
MySQL 条件查询的常用操作
2022/04/28 MySQL