UNPKG

zl_date

Version:

日期选择插件

219 lines (206 loc) 6.29 kB
var _el = ''; var y = ''; var m = ''; var d = ''; var _type = ''; function Z_date(obj){ //添加input _el = document.querySelector(obj.el); _type = obj.type; _el.style.position = 'relative'; _el.innerHTML = '<div class="Z_date" ><span onclick="Z_showDiv()"><input class="Z_ipt" onfocus="blur()" type="text" ><img src="comm/img/date.png" /></span><div onclick="noBubbling()" style="display:none"></div></div>'; document.querySelector('body').addEventListener("click",function(){ var _div = _el.querySelector(".Z_date div"); _div.style.display = 'none'; }); var _date = new Date(); //当前年 y = _date.getFullYear(); //当前月 m = _date.getMonth()+1; //当前日 d = _date.getDate(); if(m < 10){ m = "0" + m; } if(d < 10){ d = "0" + d; } Z_thisMonth(); } function Z_thisMonth(){ var str = y + "-" + m + "-" + '01'; var new_date = new Date(str); //当前月1号是周几? var _day = new_date.getDay(); var newDate = new Date(y,m,0); //当前月总共多少天 var _allDay = newDate.getDate(); var _allDate = []; //剩余格子 var _lattice = 0; for(var i=0;i<7;i++){ if(i==_day){ break; } else{ _lattice++; _allDate.push(0); } } for(var i=1;i<=_allDay;i++){ _allDate.push(i); } //剩余格子 _lattice = 7 - (_lattice + _allDay)%7; if(_lattice == 7){ _lattice = 0; } for(var i=0;i<_lattice;i++){ _allDate.push(0); } console.log({y,m,d}); //当前日期高亮显示 var _date = new Date(); var _y = _date.getFullYear(); var _m = _date.getMonth()+1; var _d = _date.getDate(); console.log({_y,_m,_d}); var _div = _el.querySelector(".Z_date div"); var sel = '<div style = "width:100%"><input onchange="changeY(event)" style = "width:80px;text-align: center;" type="text" value="'+ y +'">年<input onchange="changeM(event)" style = "width:80px;text-align: center;" type="text" value="'+ m +'">月</div>'; //创建日期格子 var _head = '<div>日</div><div>一</div><div>二</div><div>三</div><div>四</div><div>五</div><div>六</div>'; var _body = ''; console.log({_allDate,d}); for(var i=0;i<_allDate.length;i++){ if(_allDate[i] == 0){ _body += '<div></div>'; } else if(_y == Number(y) && _m == Number(m) && _d == Number(_allDate[i])){ _body += '<div class="_nowdate" onclick=selDate(event) >' + _allDate[i] + '</div>'; } else if(Number(_allDate[i])== Number(d)){ _body += '<div class="_date" onclick=selDate(event) style="background: #00BDFF;color: #fff;">' + _allDate[i] + '</div>'; } else{ _body += '<div class="_date" onclick=selDate(event)>' + _allDate[i] + '</div>'; } } _div.innerHTML = sel + _head + _body; } function selDate(e){ d = e.target.innerText; var _allDate = _el.querySelectorAll("._date"); for(var i=0;i<_allDate.length;i++){ _allDate[i].style.background = ''; _allDate[i].style.color = '#000000'; } e.target.style.backgroundColor = "#00BDFF"; e.target.style.color = '#fff'; m = Number(m); d = Number(d); if(m < 10){ m = "0" + m; } if(d < 10){ d = "0" + d; } y = String(y); //判断显示类型 if(_type == 1){ _el.querySelector(".Z_ipt").value = y + '年' + m + "月" + d + "日"; } else if(_type == 2){ _el.querySelector(".Z_ipt").value = y + '-' + m + "-" + d; } else if(_type == 3){ _el.querySelector(".Z_ipt").value = y + '/' + m + "/" + d; } else if(_type == 4){ _el.querySelector(".Z_ipt").value = y + m + d; } var _div = _el.querySelector(".Z_date div"); _div.style.display = 'none'; } function Z_showDiv(e){ event.stopPropagation(); var _div = _el.querySelector(".Z_date div"); if( _div.style.display == 'none'){ _div.style.display = 'block'; } else{ _div.style.display = 'none'; } } function noBubbling(e){ event.stopPropagation(); } function changeM(e){ if(Number(e.target.value)>12 || Number(e.target.value) < 1){ e.target.value = m; } else{ m = e.target.value; if(Number(m) < 10){ m = "0" + Number(m); e.target.value = m; } m = Number(m); d = Number(d); if(m < 10){ m = "0" + m; } if(d < 10){ d = "0" + d; } y = String(y); //判断显示类型 if(_type == 1){ _el.querySelector(".Z_ipt").value = y + '年' + m + "月" + d + "日"; } else if(_type == 2){ _el.querySelector(".Z_ipt").value = y + '-' + m + "-" + d; } else if(_type == 3){ _el.querySelector(".Z_ipt").value = y + '/' + m + "/" + d; } else if(_type == 4){ _el.querySelector(".Z_ipt").value = y + m + d; } Z_thisMonth(); } } function changeY(e){ if(Number(e.target.value)>2999 || Number(e.target.value) < 1970){ e.target.value = y; } else{ y = e.target.value; m = Number(m); d = Number(d); if(m < 10){ m = "0" + m; } if(d < 10){ d = "0" + d; } y = String(y); //判断显示类型 if(_type == 1){ _el.querySelector(".Z_ipt").value = y + '年' + m + "月" + d + "日"; } else if(_type == 2){ _el.querySelector(".Z_ipt").value = y + '-' + m + "-" + d; } else if(_type == 3){ _el.querySelector(".Z_ipt").value = y + '/' + m + "/" + d; } else if(_type == 4){ _el.querySelector(".Z_ipt").value = y + m + d; } Z_thisMonth(); } } modules.exports = { Z_date }