您的位置:首页 > Web前端 > JavaScript

日期控件-简单实用兼容好的js日期控件

2012-04-12 18:06 411 查看
/*----日期js-----*/

function $i(id){

return document.getElementById(id);

}

function findPosX(obj){

var curleft = 0;

if (obj.offsetParent){

while (obj.offsetParent){

curleft += obj.offsetLeft;

obj = obj.offsetParent;

}

} else if (obj.x){

curleft += obj.x;

}

return curleft;

}

function findPosY(obj){

var curtop = 0;

if (obj.offsetParent){

while (obj.offsetParent){

curtop += obj.offsetTop;

obj = obj.offsetParent;

}

} else if (obj.y){

curtop += obj.y;

}

return curtop;

}

/*-----------e-global----------*/

var curDate={

year:0,

month:0,

date:0

};

var selDate={

year:0,

month:0,

date:0

};

var oldDate={

year:0,

month:0,

date:0

};

var calWrap = null;

var outObj = null;

var outTxt = null;

var outBtn = null;

function calShow(txt, btn){

if(typeof txt == 'string'){

outTxt = $i(txt);

}else{

outTxt = txt;

}

outBtn = (arguments.length == 1)? null : btn;

outObj = outBtn || outTxt;

calWrap.style.display = "block";

var posx = findPosX(outObj);

var posy = findPosY(outObj);

var objHeight = outObj.offsetHeight;

calWrap.style.left = posx + "px";

calWrap.style.top = (posy+objHeight) + "px";

var selectedDate = outTxt.value;

var d = null;

if (selectedDate!=null&&selectedDate!=""){

selectedDate = selectedDate.replace(/-/g,"/");

d = new Date(selectedDate);

}else{

d = new Date();

}

selDate.year = d.getFullYear();

selDate.month = d.getMonth();

selDate.date=d.getDate();

oldDate.year = d.getFullYear();

oldDate.month = d.getMonth();

oldDate.date=d.getDate();

//alert(selDate.date);

createCalendar();

}

function calHide(){

calWrap.style.display = "none";

}

function moveHide() {//清空--panguixiang

outObj.value = "";

}

function meizzToday() //今天--panguixiang

{

var today;

meizzTheYear = new Date().getFullYear();

meizzTheMonth = new Date().getMonth()+1;

today=new Date().getDate();

//meizzSetDay(meizzTheYear,meizzTheMonth);

if(outObj){

outObj.value=meizzTheYear + "-" + meizzTheMonth + "-" + today;

}

}

function preYear(){

if( selDate.year <= 1900) return;

selDate.year--;

createCalendar();

}

function nextYear(){

if( selDate.year >= 99999) return;

selDate.year++;

createCalendar();

}

function preMonth(){

if( selDate.month <=0 ){

selDate.year--;

selDate.month = 11;

}else{

selDate.month--;

}

createCalendar();

}

function nextMonth(){

if( selDate.month >=11 ){

selDate.year++;

selDate.month = 0;

}else{

selDate.month++;

}

createCalendar();

}

function setdate(j){

var month, date;

if( selDate.month < 9 ){

month="0"+(selDate.month+1);

}else{

month=(selDate.month+1);

}

if( j < 10){

date="0"+j;

}else{

date=j;

}

var str=selDate.year+"-"+month+"-"+date;

outTxt.value = str;

calHide();

return false;

}

function createCalendar(){

var selDay = new Date(selDate.year, selDate.month, 1).getDay();

var selNum = new Date(selDate.year, selDate.month+1, 0).getDate();

$i("selYear").innerHTML = selDate.year;

$i("selMonth").innerHTML = selDate.month+1;

var dateA = $i("cal").getElementsByTagName("a");

for(var i=0,j=1; i<42; i++){

dateA[i].className = "";

if( i>=selDay && j<=selNum){

if(selDate.year==oldDate.year&&selDate.month==oldDate.month&&j==oldDate.date){

dateA[i].className = "curDate";

}

dateA[i].num = dateA[i].innerHTML = j;

dateA[i].onclick = function(){ setdate(this.num);};

j++;

}else{

dateA[i].innerHTML = "";

dateA[i].onclick = function() {};//移除innerHTML的同时也要移除上个月可能绑定的事件

}

}

}

function init(){

var cur = new Date();

selDate.year = curDate.year = cur.getFullYear();

selDate.month = curDate.month = cur.getMonth();

selDate.date = curDate.date = cur.getDate();

calWrap = document.createElement("div");

calWrap.id = "calWrap";

document.body.appendChild(calWrap);

var str;

str = "<div class='tool'>"+

"<span id='preYear' class='btn' onclick='preYear()'><<</span>"+

"<span id='preMonth' class='btn' onclick='preMonth()'><</span>"+

"<span id='selYear'></span>"+

"<span id='selMonth'></span>"+

"<span id='nextMonth' class='btn' onclick='nextMonth()'>></span>"+

"<span id='nextYear' class='btn' onclick='nextYear()'>>></span>"+

"</div>"+

"<div class='week'>"+

"<span>日</span><span>一</span><span>二</span><span>三</span><span>四</span><span>五</span><span>六</span>"+

"</div>";

str += "<div id='cal'>";

for(var i=0,j=1; i<42; i++){

str += "<a href='javascript:void(0)'></a>";

}

str += "</div>"+

"<div class='close'><a href='#' onclick='moveHide()'>清空</a>   "+ss(看下面的ss备注)

calWrap.innerHTML = str;

createCalendar();

document.onclick = function(e){

var e = e || window.event;

var srcElement = e.srcElement || e.target;

if( srcElement != outTxt && srcElement != outBtn && srcElement.className != "btn" ){

calHide();

}

};

}

window.onload = init;

ss备注:

"<a href='#' href='#'

/*------日期CSS------*/

*{margin:0; padding:0;}

body{font:12px/1.5em Tahoma, Helvetica, Arial, sans-serif;}

a{text-decoration:none; color:#000;}

.inputWrap{width:500px; border:1px solid #DDD; margin:20px auto; padding:20px 30px;}

h1{margin:10px 0; padding:5px 10px; border-left:30px solid #ffd540; font-size:24px;}

input.txt{width:200px; height:16px; padding:1px; border:1px solid #999;}

/*----------------------------Star=calendar--------------------------------*/

#calWrap{position:absolute; display:none; width:148px; background:#fff; z-index:9999; border:1px solid #999;}

#dateIframe{position:absolute; z-index:-1; width:148px; height:169px; top:0; left:0; border:none; outline:none;}

#calWrap .tool,

#calWrap .week{clear:both;}

#calWrap span,

#calWrap #cal a{display:block; float:left; width:14px; height:14px; padding:2px 3px; margin:1px 0 0 1px; background:#FFBC37; cursor:pointer; text-align:center; line-height:14px;}

#calWrap .tool{background:#FFBC37;}

#calWrap .tool span{margin:0;}

#calWrap .tool #selYear{width:34px;}

#calWrap .tool #preYear,

#calWrap .tool #nextYear{width:18px;}

#calWrap .close{margin-top:1px; padding-right:3px; background:#FFBC37; clear:both; text-align:right; }

#calWrap .remove{margin-top:1px; padding-right:3px; background:#FFBC37; clear:both; text-align:left; }

#calWrap #cal a{background:#D0DAFD; font-size:11px; text-decoration:none;}

#calWrap #cal a.curDate{background:#FFBC37;}

#calWrap #cal a:hover{background:#84A4F9;}

#calWrap #cal a.null{background:#EDF1FE;}

#calWrap #cal a.null:hover{background:#EDF1FE;}

/*------页面调用(先引入上面的js和css)------*/

<input type="text" id="txtDate" value="" class="txt" onfocus="calShow(this)">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  id return function