<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Demo1</title>
<style type="text/css">
.demo1{
height:300px;
}
</style>
</head>
<body>
<div class="demo1">
方本框:<input type="text" id="J-xl">
</div> <div class="demo1">
按钮触发:<input type="text" id="J-xl-2">
<input type="button" id="J-xl-2-btn" value="打开">
</div> <div class="demo1">
<label for="J-xl-3">Label触发:</label><input type="text" id="J-xl-3" >
</div> <div class="demo1">
直接传dom:<input type="text" id="J-xl-4" >
</div> <script type="text/javascript" src="laydate.dev.js"></script>
<script type="text/javascript">
laydate({
elem: '#J-xl'
}); document.getElementById('J-xl-2-btn').onclick = function(){
laydate({
elem: '#J-xl-2'
});
} laydate({
elem: '#J-xl-3'
}); laydate({
elem: document.getElementById('J-xl-4')
});
</script>
</body>
</html>
 /**

  @Name : layDate v1.1 日期控件
@Author: 贤心
@Date: 2014-06-25
@QQ群:176047195
@Site:http://sentsin.com/layui/laydate */ ;!function(win){ //全局配置,如果采用默认均不需要改动
var config = {
path: '', //laydate所在路径
defSkin: 'default', //初始化皮肤
format: 'YYYY-MM-DD', //日期格式
min: '1900-01-01 00:00:00', //最小日期
max: '2099-12-31 23:59:59', //最大日期
isv: false
}; var Dates = {}, doc = document, creat = 'createElement', byid = 'getElementById', tags = 'getElementsByTagName';
var as = ['laydate_box', 'laydate_void', 'laydate_click', 'LayDateSkin', 'skins/', '/laydate.css']; //主接口
win.laydate = function(options){
options = options || {};
try{
as.event = win.event ? win.event : laydate.caller.arguments[0];
} catch(e){};
Dates.run(options);
return laydate;
}; laydate.v = '1.1'; //获取组件存放路径
Dates.getPath = (function(){
var js = document.scripts, jsPath = js[js.length - 1].src;
return config.path ? config.path : jsPath.substring(0, jsPath.lastIndexOf("/") + 1);
}()); Dates.use = function(lib, id){
var link = doc[creat]('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = Dates.getPath + lib + as[5];
id && (link.id = id);
doc[tags]('head')[0].appendChild(link);
link = null;
}; Dates.trim = function(str){
str = str || '';
return str.replace(/^\s|\s$/g, '').replace(/\s+/g, ' ');
}; //补齐数位
Dates.digit = function(num){
return num < 10 ? '0' + (num|0) : num;
}; Dates.stopmp = function(e){
e = e || win.event;
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
return this;
}; Dates.each = function(arr, fn){
var i = 0, len = arr.length;
for(; i < len; i++){
if(fn(i, arr[i]) === false){
break
}
}
}; Dates.hasClass = function(elem, cls){
elem = elem || {};
return new RegExp('\\b' + cls +'\\b').test(elem.className);
}; Dates.addClass = function(elem, cls){
elem = elem || {};
Dates.hasClass(elem, cls) || (elem.className += ' ' + cls);
elem.className = Dates.trim(elem.className);
return this;
}; Dates.removeClass = function(elem, cls) {
elem = elem || {};
if (Dates.hasClass(elem, cls)) {
var reg = new RegExp('\\b' + cls +'\\b');
elem.className = elem.className.replace(reg, '');
}
return this;
}; //清除css属性
Dates.removeCssAttr = function(elem, attr){
var s = elem.style;
if(s.removeProperty){
s.removeProperty(attr);
} else {
s.removeAttribute(attr);
}
}; //显示隐藏
Dates.shde = function(elem, type){
elem.style.display = type ? 'none' : 'block';
}; //简易选择器
Dates.query = function(node){
if(node && node.nodeType === 1){
if(node.tagName.toLowerCase() !== 'input'){
throw new Error('选择器elem错误');
}
return node;
} var node = (Dates.trim(node)).split(' '), elemId = doc[byid](node[0].substr(1)), arr;
if(!elemId){
return;
} else if(!node[1]){
return elemId;
} else if(/^\./.test(node[1])){
var find, child = node[1].substr(1), exp = new RegExp('\\b' + child +'\\b');
arr = []
find = doc.getElementsByClassName ? elemId.getElementsByClassName(child) : elemId[tags]('*');
Dates.each(find, function(ii, that){
exp.test(that.className) && arr.push(that);
});
return arr[0] ? arr : '';
} else {
arr = elemId[tags](node[1]);
return arr[0] ? elemId[tags](node[1]) : '';
}
}; //事件监听器
Dates.on = function(elem, even, fn){
elem.attachEvent ? elem.attachEvent('on'+ even, function(){
fn.call(elem, win.even);
}) : elem.addEventListener(even, fn, false);
return Dates;
}; //阻断mouseup
Dates.stopMosup = function(evt, elem){
if(evt !== 'mouseup'){
Dates.on(elem, 'mouseup', function(ev){
Dates.stopmp(ev);
});
}
}; Dates.run = function(options){
var S = Dates.query, elem, devt, even = as.event, target;
try {
target = even.target || even.srcElement || {};
} catch(e){
target = {};
}
elem = options.elem ? S(options.elem) : target;
if(even && target.tagName){
if(!elem || elem === Dates.elem){
return;
}
Dates.stopMosup(even.type, elem);
Dates.stopmp(even);
Dates.view(elem, options);
Dates.reshow();
} else {
devt = options.event || 'click';
Dates.each((elem.length|0) > 0 ? elem : [elem], function(ii, that){
Dates.stopMosup(devt, that);
Dates.on(that, devt, function(ev){
Dates.stopmp(ev);
if(that !== Dates.elem){
Dates.view(that, options);
Dates.reshow();
}
});
});
}
}; Dates.scroll = function(type){
type = type ? 'scrollLeft' : 'scrollTop';
return doc.body[type] | doc.documentElement[type];
}; Dates.winarea = function(type){
return document.documentElement[type ? 'clientWidth' : 'clientHeight']
}; //判断闰年
Dates.isleap = function(year){
return (year%4 === 0 && year%100 !== 0) || year%400 === 0;
}; //检测是否在有效期
Dates.checkVoid = function(YY, MM, DD){
var back = [];
YY = YY|0;
MM = MM|0;
DD = DD|0;
if(YY < Dates.mins[0]){
back = ['y'];
} else if(YY > Dates.maxs[0]){
back = ['y', 1];
} else if(YY >= Dates.mins[0] && YY <= Dates.maxs[0]){
if(YY == Dates.mins[0]){
if(MM < Dates.mins[1]){
back = ['m'];
} else if(MM == Dates.mins[1]){
if(DD < Dates.mins[2]){
back = ['d'];
}
}
}
if(YY == Dates.maxs[0]){
if(MM > Dates.maxs[1]){
back = ['m', 1];
} else if(MM == Dates.maxs[1]){
if(DD > Dates.maxs[2]){
back = ['d', 1];
}
}
}
}
return back;
}; //时分秒的有效检测
Dates.timeVoid = function(times, index){
if(Dates.ymd[1]+1 == Dates.mins[1] && Dates.ymd[2] == Dates.mins[2]){
if(index === 0 && (times < Dates.mins[3])){
return 1;
} else if(index === 1 && times < Dates.mins[4]){
return 1;
} else if(index === 2 && times < Dates.mins[5]){
return 1;
}
} else if(Dates.ymd[1]+1 == Dates.maxs[1] && Dates.ymd[2] == Dates.maxs[2]){
if(index === 0 && times > Dates.maxs[3]){
return 1;
} else if(index === 1 && times > Dates.maxs[4]){
return 1;
} else if(index === 2 && times > Dates.maxs[5]){
return 1;
}
}
if(times > (index ? 59 : 23)){
return 1;
}
}; //检测日期是否合法
Dates.check = function(){
var reg = Dates.options.format.replace(/YYYY|MM|DD|hh|mm|ss/g,'\\d+\\').replace(/\\$/g, '');
var exp = new RegExp(reg), value = Dates.elem[as.elemv];
var arr = value.match(/\d+/g) || [], isvoid = Dates.checkVoid(arr[0], arr[1], arr[2]);
if(value.replace(/\s/g, '') !== ''){
if(!exp.test(value)){
Dates.elem[as.elemv] = '';
Dates.msg('日期不符合格式,请重新选择。');
return 1;
} else if(isvoid[0]){
Dates.elem[as.elemv] = '';
Dates.msg('日期不在有效期内,请重新选择。');
return 1;
} else {
isvoid.value = Dates.elem[as.elemv].match(exp).join();
arr = isvoid.value.match(/\d+/g);
if(arr[1] <){
arr[1] = 1;
isvoid.auto = 1;
} else if(arr[1] > 12){
arr[1] = 12;
isvoid.auto = 1;
} else if(arr[1].length <){
isvoid.auto = 1;
}
if(arr[2] < 1){
arr[2] = 1;
isvoid.auto = 1;
} else if(arr[2] > Dates.months[(arr[1]|0)-1]){
arr[2] = 31;
isvoid.auto = 1;
} else if(arr[2].length <){
isvoid.auto = 1;
}
if(arr.length > 3){
if(Dates.timeVoid(arr[3], 0)){
isvoid.auto = 1;
};
if(Dates.timeVoid(arr[4], 1)){
isvoid.auto = 1;
};
if(Dates.timeVoid(arr[5], 2)){
isvoid.auto = 1;
};
}
if(isvoid.auto){
Dates.creation([arr[0], arr[1]|0, arr[2]|0], 1);
} else if(isvoid.value !== Dates.elem[as.elemv]){
Dates.elem[as.elemv] = isvoid.value;
}
}
}
}; //生成日期
Dates.months = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
Dates.viewDate = function(Y, M, D){
var S = Dates.query, log = {}, De = new Date();
Y < (Dates.mins[0]|0) && (Y = (Dates.mins[0]|0));
Y > (Dates.maxs[0]|0) && (Y = (Dates.maxs[0]|0)); De.setFullYear(Y, M, D);
log.ymd = [De.getFullYear(), De.getMonth(), De.getDate()]; Dates.months[1] = Dates.isleap(log.ymd[0]) ? 29 : 28; De.setFullYear(log.ymd[0], log.ymd[1], 1);
log.FDay = De.getDay(); log.PDay = Dates.months[M === 0 ? 11 : M - 1] - log.FDay + 1;
log.NDay = 1; //渲染日
Dates.each(as.tds, function(i, elem){
var YY = log.ymd[0], MM = log.ymd[1] + 1, DD;
elem.className = '';
if(i < log.FDay){
elem.innerHTML = DD = i + log.PDay;
Dates.addClass(elem, 'laydate_nothis');
MM === 1 && (YY -= 1);
MM = MM === 1 ? 12 : MM - 1;
} else if(i >= log.FDay && i < log.FDay + Dates.months[log.ymd[1]]){
elem.innerHTML = DD = i - log.FDay + 1;
if(i - log.FDay + 1 === log.ymd[2]){
Dates.addClass(elem, as[2]);
log.thisDay = elem;
}
} else {
elem.innerHTML = DD = log.NDay++;
Dates.addClass(elem, 'laydate_nothis');
MM === 12 && (YY += 1);
MM = MM === 12 ? 1 : MM + 1;
} if(Dates.checkVoid(YY, MM, DD)[0]){
Dates.addClass(elem, as[1]);
} Dates.options.festival && Dates.festival(elem, MM + '.' + DD);
elem.setAttribute('y', YY);
elem.setAttribute('m', MM);
elem.setAttribute('d', DD);
YY = MM = DD = null;
}); Dates.valid = !Dates.hasClass(log.thisDay, as[1]);
Dates.ymd = log.ymd; //锁定年月
as.year.value = Dates.ymd[0] + '年';
as.month.value = Dates.digit(Dates.ymd[1] + 1) + '月'; //定位月
Dates.each(as.mms, function(i, elem){
var getCheck = Dates.checkVoid(Dates.ymd[0], (elem.getAttribute('m')|0) + 1);
if(getCheck[0] === 'y' || getCheck[0] === 'm'){
Dates.addClass(elem, as[1]);
} else {
Dates.removeClass(elem, as[1]);
}
Dates.removeClass(elem, as[2]);
getCheck = null
});
Dates.addClass(as.mms[Dates.ymd[1]], as[2]); //定位时分秒
log.times = [
Dates.inymd[3]|0 || 0,
Dates.inymd[4]|0 || 0,
Dates.inymd[5]|0 || 0
];
Dates.each(new Array(3), function(i){
Dates.hmsin[i].value = Dates.digit(Dates.timeVoid(log.times[i], i) ? Dates.mins[i+3]|0 : log.times[i]|0);
}); //确定按钮状态
Dates[Dates.valid ? 'removeClass' : 'addClass'](as.ok, as[1]);
}; //节日
Dates.festival = function(td, md){
var str;
switch(md){
case '1.1':
str = '元旦';
break;
case '3.8':
str = '妇女';
break;
case '4.5':
str = '清明';
break;
case '5.1':
str = '劳动';
break;
case '6.1':
str = '儿童';
break;
case '9.10':
str = '教师';
break;
case '10.1':
str = '国庆';
break;
};
str && (td.innerHTML = str);
str = null;
}; //生成年列表
Dates.viewYears = function(YY){
var S = Dates.query, str = '';
Dates.each(new Array(14), function(i){
if(i === 7) {
str += '<li '+ (parseInt(as.year.value) === YY ? 'class="'+ as[2] +'"' : '') +' y="'+ YY +'">'+ YY +'年</li>';
} else {
str += '<li y="'+ (YY-7+i) +'">'+ (YY-7+i) +'年</li>';
}
});
S('#laydate_ys').innerHTML = str;
Dates.each(S('#laydate_ys li'), function(i, elem){
if(Dates.checkVoid(elem.getAttribute('y'))[0] === 'y'){
Dates.addClass(elem, as[1]);
} else {
Dates.on(elem, 'click', function(ev){
Dates.stopmp(ev).reshow();
Dates.viewDate(this.getAttribute('y')|0, Dates.ymd[1], Dates.ymd[2]);
});
}
});
}; //初始化面板数据
Dates.initDate = function(){
var S = Dates.query, log = {}, De = new Date();
var ymd = Dates.elem[as.elemv].match(/\d+/g) || [];
if(ymd.length <){
ymd = Dates.options.start.match(/\d+/g) || [];
if(ymd.length < 3){
ymd = [De.getFullYear(), De.getMonth()+1, De.getDate()];
}
}
Dates.inymd = ymd;
Dates.viewDate(ymd[0], ymd[1]-1, ymd[2]);
}; //是否显示零件
Dates.iswrite = function(){
var S = Dates.query, log = {
time: S('#laydate_hms')
};
Dates.shde(log.time, !Dates.options.istime);
Dates.shde(as.oclear, !('isclear' in Dates.options ? Dates.options.isclear : 1));
Dates.shde(as.otoday, !('istoday' in Dates.options ? Dates.options.istoday : 1));
Dates.shde(as.ok, !('issure' in Dates.options ? Dates.options.issure : 1));
}; //方位辨别
Dates.orien = function(obj, pos){
var tops, rect = Dates.elem.getBoundingClientRect();
obj.style.left = rect.left + (pos ? 0 : Dates.scroll(1)) + 'px';
if(rect.bottom + obj.offsetHeight/1.5 <= Dates.winarea()){
tops = rect.bottom - 1;
} else {
tops = rect.top > obj.offsetHeight/1.5 ? rect.top - obj.offsetHeight + 1 : Dates.winarea() - obj.offsetHeight;
}
obj.style.top = tops + (pos ? 0 : Dates.scroll()) + 'px';
}; //吸附定位
Dates.follow = function(obj){
if(Dates.options.fixed){
obj.style.position = 'fixed';
Dates.orien(obj, 1);
} else {
obj.style.position = 'absolute';
Dates.orien(obj);
}
}; //生成表格
Dates.viewtb = (function(){
var tr, view = [], weeks = [ '日', '一', '二', '三', '四', '五', '六'];
var log = {}, table = doc[creat]('table'), thead = doc[creat]('thead');
thead.appendChild(doc[creat]('tr'));
log.creath = function(i){
var th = doc[creat]('th');
th.innerHTML = weeks[i];
thead[tags]('tr')[0].appendChild(th);
th = null;
}; Dates.each(new Array(6), function(i){
view.push([]);
tr = table.insertRow(0);
Dates.each(new Array(7), function(j){
view[i][j] = 0;
i === 0 && log.creath(j);
tr.insertCell(j);
});
}); table.insertBefore(thead, table.children[0]);
table.id = table.className = 'laydate_table';
tr = view = null;
return table.outerHTML.toLowerCase();
}()); //渲染控件骨架
Dates.view = function(elem, options){
var S = Dates.query, div, log = {};
options = options || elem; Dates.elem = elem;
Dates.options = options;
Dates.options.format || (Dates.options.format = config.format);
Dates.options.start = Dates.options.start || '';
Dates.mm = log.mm = [Dates.options.min || config.min, Dates.options.max || config.max];
Dates.mins = log.mm[0].match(/\d+/g);
Dates.maxs = log.mm[1].match(/\d+/g); as.elemv = /textarea|input/.test(Dates.elem.tagName.toLocaleLowerCase()) ? 'value' : 'innerHTML'; if(!Dates.box){
div = doc[creat]('div');
div.id = as[0];
div.className = as[0];
div.style.cssText = 'position: absolute;';
div.setAttribute('name', 'laydate-v'+ laydate.v); div.innerHTML = log.html = '<div class="laydate_top">'
+'<div class="laydate_ym laydate_y" id="laydate_YY">'
+'<a class="laydate_choose laydate_chprev laydate_tab"><cite></cite></a>'
+'<input id="laydate_y" readonly><label></label>'
+'<a class="laydate_choose laydate_chnext laydate_tab"><cite></cite></a>'
+'<div class="laydate_yms">'
+'<a class="laydate_tab laydate_chtop"><cite></cite></a>'
+'<ul id="laydate_ys"></ul>'
+'<a class="laydate_tab laydate_chdown"><cite></cite></a>'
+'</div>'
+'</div>'
+'<div class="laydate_ym laydate_m" id="laydate_MM">'
+'<a class="laydate_choose laydate_chprev laydate_tab"><cite></cite></a>'
+'<input id="laydate_m" readonly><label></label>'
+'<a class="laydate_choose laydate_chnext laydate_tab"><cite></cite></a>'
+'<div class="laydate_yms" id="laydate_ms">'+ function(){
var str = '';
Dates.each(new Array(12), function(i){
str += '<span m="'+ i +'">'+ Dates.digit(i+1) +'月</span>';
});
return str;
}() +'</div>'
+'</div>'
+'</div>' + Dates.viewtb +'<div class="laydate_bottom">'
+'<ul id="laydate_hms">'
+'<li class="laydate_sj">时间</li>'
+'<li><input readonly>:</li>'
+'<li><input readonly>:</li>'
+'<li><input readonly></li>'
+'</ul>'
+'<div class="laydate_time" id="laydate_time"></div>'
+'<div class="laydate_btn">'
+'<a id="laydate_clear">清空</a>'
+'<a id="laydate_today">今天</a>'
+'<a id="laydate_ok">确认</a>'
+'</div>'
+(config.isv ? '<a href="http://sentsin.com/layui/laydate/" class="laydate_v" target="_blank">laydate-v'+ laydate.v +'</a>' : '')
+'</div>';
doc.body.appendChild(div);
Dates.box = S('#'+as[0]);
Dates.events();
div = null;
} else {
Dates.shde(Dates.box);
}
Dates.follow(Dates.box);
options.zIndex ? Dates.box.style.zIndex = options.zIndex : Dates.removeCssAttr(Dates.box, 'z-index');
Dates.stopMosup('click', Dates.box); Dates.initDate();
Dates.iswrite();
Dates.check();
}; //隐藏内部弹出元素
Dates.reshow = function(){
Dates.each(Dates.query('#'+ as[0] +' .laydate_show'), function(i, elem){
Dates.removeClass(elem, 'laydate_show');
});
return this;
}; //关闭控件
Dates.close = function(){
Dates.reshow();
Dates.shde(Dates.query('#'+ as[0]), 1);
Dates.elem = null;
}; //转换日期格式
Dates.parse = function(ymd, hms, format){
ymd = ymd.concat(hms);
format = format || (Dates.options ? Dates.options.format : config.format);
return format.replace(/YYYY|MM|DD|hh|mm|ss/g, function(str, index){
ymd.index = ++ymd.index|0;
return Dates.digit(ymd[ymd.index]);
});
}; //返回最终日期
Dates.creation = function(ymd, hide){
var S = Dates.query, hms = Dates.hmsin;
var getDates = Dates.parse(ymd, [hms[0].value, hms[1].value, hms[2].value]);
Dates.elem[as.elemv] = getDates;
if(!hide){
Dates.close();
typeof Dates.options.choose === 'function' && Dates.options.choose(getDates);
}
}; //事件
Dates.events = function(){
var S = Dates.query, log = {
box: '#'+as[0]
}; Dates.addClass(doc.body, 'laydate_body'); as.tds = S('#laydate_table td');
as.mms = S('#laydate_ms span');
as.year = S('#laydate_y');
as.month = S('#laydate_m'); //显示更多年月
Dates.each(S(log.box + ' .laydate_ym'), function(i, elem){
Dates.on(elem, 'click', function(ev){
Dates.stopmp(ev).reshow();
Dates.addClass(this[tags]('div')[0], 'laydate_show');
if(!i){
log.YY = parseInt(as.year.value);
Dates.viewYears(log.YY);
}
});
}); Dates.on(S(log.box), 'click', function(){
Dates.reshow();
}); //切换年
log.tabYear = function(type){
if(type === 0){
Dates.ymd[0]--;
} else if(type === 1) {
Dates.ymd[0]++;
} else if(type === 2) {
log.YY -= 14;
} else {
log.YY += 14;
}
if(type <){
Dates.viewDate(Dates.ymd[0], Dates.ymd[1], Dates.ymd[2]);
Dates.reshow();
} else {
Dates.viewYears(log.YY);
}
};
Dates.each(S('#laydate_YY .laydate_tab'), function(i, elem){
Dates.on(elem, 'click', function(ev){
Dates.stopmp(ev);
log.tabYear(i);
});
}); //切换月
log.tabMonth = function(type){
if(type){
Dates.ymd[1]++;
if(Dates.ymd[1] === 12){
Dates.ymd[0]++;
Dates.ymd[1] = 0;
}
} else {
Dates.ymd[1]--;
if(Dates.ymd[1] === -1){
Dates.ymd[0]--;
Dates.ymd[1] = 11;
}
}
Dates.viewDate(Dates.ymd[0], Dates.ymd[1], Dates.ymd[2]);
};
Dates.each(S('#laydate_MM .laydate_tab'), function(i, elem){
Dates.on(elem, 'click', function(ev){
Dates.stopmp(ev).reshow();
log.tabMonth(i);
});
}); //选择月
Dates.each(S('#laydate_ms span'), function(i, elem){
Dates.on(elem, 'click', function(ev){
Dates.stopmp(ev).reshow();
if(!Dates.hasClass(this, as[1])){
Dates.viewDate(Dates.ymd[0], this.getAttribute('m')|0, Dates.ymd[2]);
}
});
}); //选择日
Dates.each(S('#laydate_table td'), function(i, elem){
Dates.on(elem, 'click', function(ev){
if(!Dates.hasClass(this, as[1])){
Dates.stopmp(ev);
Dates.creation([this.getAttribute('y')|0, this.getAttribute('m')|0, this.getAttribute('d')|0]);
}
});
}); //清空
as.oclear = S('#laydate_clear');
Dates.on(as.oclear, 'click', function(){
Dates.elem[as.elemv] = '';
Dates.close();
}); //今天
as.otoday = S('#laydate_today');
Dates.on(as.otoday, 'click', function(){
var now = new Date();
Dates.creation([now.getFullYear(), now.getMonth() + 1, now.getDate()]);
}); //确认
as.ok = S('#laydate_ok');
Dates.on(as.ok, 'click', function(){
if(Dates.valid){
Dates.creation([Dates.ymd[0], Dates.ymd[1]+1, Dates.ymd[2]]);
}
}); //选择时分秒
log.times = S('#laydate_time');
Dates.hmsin = log.hmsin = S('#laydate_hms input');
log.hmss = ['小时', '分钟', '秒数'];
log.hmsarr = []; //生成时分秒或警告信息
Dates.msg = function(i, title){
var str = '<div class="laydte_hsmtex">'+ (title || '提示') +'<span>×</span></div>';
if(typeof i === 'string'){
str += '<p>'+ i +'</p>';
Dates.shde(S('#'+as[0]));
Dates.removeClass(log.times, 'laydate_time1').addClass(log.times, 'laydate_msg');
} else {
if(!log.hmsarr[i]){
str += '<div id="laydate_hmsno" class="laydate_hmsno">';
Dates.each(new Array(i === 0 ? 24 : 60), function(i){
str += '<span>'+ i +'</span>';
});
str += '</div>'
log.hmsarr[i] = str;
} else {
str = log.hmsarr[i];
}
Dates.removeClass(log.times, 'laydate_msg');
Dates[i=== 0 ? 'removeClass' : 'addClass'](log.times, 'laydate_time1');
}
Dates.addClass(log.times, 'laydate_show');
log.times.innerHTML = str;
}; log.hmson = function(input, index){
var span = S('#laydate_hmsno span'), set = Dates.valid ? null : 1;
Dates.each(span, function(i, elem){
if(set){
Dates.addClass(elem, as[1]);
} else if(Dates.timeVoid(i, index)){
Dates.addClass(elem, as[1]);
} else {
Dates.on(elem, 'click', function(ev){
if(!Dates.hasClass(this, as[1])){
input.value = Dates.digit(this.innerHTML|0);
}
});
}
});
Dates.addClass(span[input.value|0], 'laydate_click');
}; //展开选择
Dates.each(log.hmsin, function(i, elem){
Dates.on(elem, 'click', function(ev){
Dates.stopmp(ev).reshow();
Dates.msg(i, log.hmss[i]);
log.hmson(this, i);
});
}); Dates.on(doc, 'mouseup', function(){
var box = S('#'+as[0]);
if(box && box.style.display !== 'none'){
Dates.check() || Dates.close();
}
}).on(doc, 'keydown', function(event){
event = event || win.event;
var codes = event.keyCode; //如果在日期显示的时候按回车
if(codes === 13 && Dates.elem){
Dates.creation([Dates.ymd[0], Dates.ymd[1]+1, Dates.ymd[2]]);
}
});
}; Dates.init = (function(){
Dates.use('need');
Dates.use(as[4] + config.defSkin, as[3]);
Dates.skinLink = Dates.query('#'+as[3]);
}()); //重置定位
laydate.reset = function(){
(Dates.box && Dates.elem) && Dates.follow(Dates.box);
}; //返回指定日期
laydate.now = function(timestamp, format){
var De = new Date((timestamp|0) ? function(tamp){
return tamp < 86400000 ? (+new Date + tamp*86400000) : tamp;
}(parseInt(timestamp)) : +new Date);
return Dates.parse(
[De.getFullYear(), De.getMonth()+1, De.getDate()],
[De.getHours(), De.getMinutes(), De.getSeconds()],
format
);
}; //皮肤选择
laydate.skin = function(lib){
Dates.skinLink.href = Dates.getPath + as[4] + lib + as[5];
}; }(window);

laydate.dev.js

jquery 日期插件的更多相关文章

  1. JQuery日期插件

    JQuery是一款非常优秀的脚本框架,其丰富的控件使用起来也非常简单,配置非常灵活.下面做一个使用日期插件datapicker的例子. 1.下载jQuery核心文件就不用说了吧,datepicker是 ...

  2. jquery日期插件jquery.datePicker参数

    1.效果图 2.引入JS.CSS文件 jquery-ui.min.css和jquery-ui.min.js文件 Includes: core.js, widget.js, mouse.js, posi ...

  3. jquery日期插件datePicker

    index.html <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equi ...

  4. jquery 日期插件datePicker使用

    1.将下载下来的DatePicker压缩包解压后整个放入项目中,不可只引入js和css 2.在html中指定input位置加上class="Wdate"(默认样式不加也可正常显示) ...

  5. DateTimePicket jQuery 日期插件,开始时间和结束时间示例

    需要引入的js文件: <input type="text" id="startTime" placeholder="开始时间"/> ...

  6. 一款简洁大气的jquery日期日历插件

    本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址:http://keleyi.com/a/bjad/em ...

  7. jquery ui bootstrap日期插件

    http://blog.csdn.net/php_897721669/article/details/7404527 搜索“jquery ui日期插件怎么显示年份”? $("#datepic ...

  8. (转)jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明

    (原)http://www.cnblogs.com/hxling/archive/2012/12/12/2814207.html jQuery Mobile 移动开发中的日期插件Mobiscroll ...

  9. jQuery Mobile 移动开发中的日期插件Mobiscroll使用说明

    近期在移动方面的开发,使用jQuery Mobile ,移动方面的插件不如Web 方面的插件多,选择的更少,有一些需要自己去封装,但功力尚不足啊. 日期插件JQM也提供了内置的,但样式方面不好看,只好 ...

随机推荐

  1. Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?

    什么是面向对象程序设计? 我们称为OOP(Object  Oriented  Programming) 就是非结构化的程序设计 要使用类和对象的方法来进行编程 什么是类,什么是对象 类就是封装了属性和 ...

  2. oc中将CGRect、CGSize、CGPoint等结构体转换为字符串

    CGRect rect = CGRectMake(160, 230, 200, 200); CGPoint point = CGPointMake(20, 20); CGSize size =  CG ...

  3. iOS开发之MVVM在项目中的应用

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  4. C++ 学习笔记(四)类的内存分配及this指针

    类,是使用C++的最主要的内容.如果将c++与C语言做比较,我感觉类更像是结构体的加强进化版.在刚接触C++不久的时候总是让类,对象,this指针弄得一脸懵逼,我对类有比较清楚的认识是从理解类在内存中 ...

  5. vmware虚拟机安装Windows 7后虚拟机自动挂起

    vmware虚拟机安装windows7后在一段时间中没有操作,虚拟机会自动挂起,是因为windows7中的设置的自动睡眠,打开[控制面板]=>[电源选项]=>[选择关闭显示器时间]将下面两 ...

  6. JQ之$.ajax()方法以及ajax跨域请求

    AJAX(Asynchronous javascript AND xml :异步javascript和xml):是一种创建交互式网页应用的网页开发技术.AJAX可以在不重新加载整个页面的情况下与服务器 ...

  7. 线段树:CDOJ1591-An easy problem A (RMQ算法和最简单的线段树模板)

    An easy problem A Time Limit: 1000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Pr ...

  8. Linux学习-额外(单一)核心模块编译

    编译前注意事项 由于我们的核心原本就有提供很多的核心工具给硬件开发商来使用, 而硬件开发商也需要针对核心 所提供的功能来设计他们的驱动程序模块,因此, 我们如果想要自行使用硬件开发商所提供的模块 来进 ...

  9. LA 4253 Archery 二分

    题意: x轴上方有若干条平行于x轴的线段 在x轴的区间\([0, \, W]\)内找一点发射一条射线,使其穿过所有线段. 问是否存在这样的点. 分析: 我们二分射线端点的坐标,将线段按纵坐标从小到大排 ...

  10. EM算法简易推导

    EM算法推导 网上和书上有关于EM算法的推导,都比较复杂,不便于记忆,这里给出一个更加简短的推导,用于备忘. 在不包含隐变量的情况下,我们求最大似然的时候只需要进行求导使导函数等于0,求出参数即可.但 ...