基于jQuery的倒计时插件代码


Posted in Javascript onMay 07, 2011

剩余时间:1小时:40分:30秒

1 /* 
* 倒计时插件,主要用来限时购买 
* By wayshan 版本1.0 
* 使用方法: 
* $(function(){ 
* $("#ElementId").countdown({ 
* Edate:"2012-12-21 15:14:23" 
* }); 
* }) */ 
;(function($){ 
$.fn.countdown = function(options){ 
if (this.length == 0){ 
return false; 
} 
return this.each(function(){ 
var Default = { 
Sdate:null,//开始时间(格式为“2010-10-10 10:10:10”)可以设置为服务端的时间 
Edate:null,//结束日期(格式为“2010-10-10 10:10:10”) 
callback:function(){ 
return false; 
} 
}, 
_H_Text='小时', 
_M_Text='分', 
_S_Text='秒', 
_lT = null, 
_cT = new Date(), 
_eT = null, 
_elT = null, 
ctime = null, 
etime = null, 
DomId = null, 
_timeout = null, 
_gt = function(){ 
if (_lT == null) { 
_elT = (etime - ctime); 
if (_elT < 0){ 
$('#'+DomId).html("<strong>0</strong>"+_H_Text+":<strong>0</strong>"+ 
_M_Text+":<strong>0</strong>"+_S_Text); 
} 
var _xT =Math.ceil(_elT/(24*60*60*1000)); 
_cT = parseInt(_cT.match(/\s(\d+)\D/)[1] * 3600) 
+ parseInt(_cT.split(":")[1] * 60)+ parseInt(_cT.split(":")[2]); 
_eT = _xT * 24 * 3600 + parseInt(_eT.match(/\s(\d+)\D/)[1] * 3600) 
+ parseInt(_eT.split(":")[1] * 60) + parseInt(_eT.split(":")[2]); 
_lT = _elT/1000; 
} 
if (_elT > 0) { 
if (_lT >= 0) { 
var _H = Math.floor(_lT / 3600); 
var _M = Math.floor((_lT - _H * 3600) / 60); 
var _S = (_lT - _H * 3600) % 60; 
$('#'+DomId).html("<strong>" + _H + "</strong>"+_H_Text+":<strong>" 
+ _M + "</strong>"+_M_Text+":<strong>" + _S + "</strong>"+_S_Text); 
_lT--; 
} else { 
clearInterval(_timeout); 
if(s.callback && $.isFunction(s.callback)){ 
s.callback.call(this); 
} 
} 
} else { 
clearInterval(_timeout); 
if(s.callback && $.isFunction(s.callback)){ 
s.callback.call(this); 
} 
} 
}, 
strDateTime = function(str){ 
//判断日期时间的输入是否正确,类型必须形如为:2011-01-01 01:01:01 
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
var r = str.match(reg); 
if(r==null)return false; 
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4] 
&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); 
} 
var s = $.extend({}, Default, options || {}); 
DomId = this.id; 
if (DomId == 'null'){ 
return; 
} 
_eT = s.Edate; 
if (!strDateTime(_eT)){ 
alert('结束日期格式不正确'); 
return false; 
} 
if (s.Sdate != null){ 
_cT = s.Sdate; 
} 
_cT = _cT.toString(); 
cdate = _cT.replace(/-/g, '/'); 
_eT = _eT.toString(); 
edate = _eT.replace(/-/g, '/'); 
ctime = new Date(cdate); 
etime = new Date(edate); 
_timeout = setInterval(_gt, 1000) 
}); 
} 
})(jQuery);
Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
JavaScript prototype属性深入介绍
Nov 27 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
jQuery编写设置和获取颜色的插件
Jan 09 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 Javascript
Vue之Watcher源码解析(1)
Jul 19 Javascript
Angular实现表单验证功能
Nov 13 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
如何用JS模拟实现数组的map方法
Jul 30 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 #Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 #Javascript
jQuery1.6 正式版发布并提供下载
May 05 #Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 #Javascript
jQuery bind事件使用详解
May 05 #Javascript
javascript 拖动表格行实现代码
May 05 #Javascript
小试JQuery的AutoComplete插件
May 04 #Javascript
You might like
php中实现可以返回多个值的函数实例
2015/03/21 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
python数组复制拷贝的实现方法
2015/06/09 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
python 创建一维的0向量实例
2019/12/02 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
创业计划书中要认真思考的问题
2013/12/28 职场文书
单位绩效考核方案
2014/05/11 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
在校证明模板
2015/06/17 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS