用在表单中的JS日历[转]

本文介绍了一个实用的JavaScript日历插件实现方法,包括如何创建日历布局、日期选择功能及日期操作函数等关键部分。该插件通过简单的两步即可集成到网页中,适用于需要日期选择功能的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script>

function replaceAll(value, rep1, rep2){
if(value==null || value==""){
   return "";
}else{
   return value.replace(new RegExp(rep1,"gm"), rep2);
}
}

alert(replaceAll("abcabcabc","a","*"));

</script>

调用方法很简单,
第一步:在页面顶部包含calenderJS.js文件:

点击下载这个js文件(单击右键仍存为,即可下载。)

第二步:给你的输入框增加onfocus事件属性:

HS_setDate(this) 是初始化的函数
calenderJS.js文件代码。下载不了js文件可以复制这段代码保存为js文件。


function HS_DateAdd(interval,number,date){
number = parseInt(number);
if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])}
if (typeof(date)=="object"){var date = date}
switch(interval){
case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break;
case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break;
case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break;
case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break;
}
}
function checkDate(year,month,date){
var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
var returnDate = "";
if (year%4==0){enddate[1]="29"}
if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date}
return returnDate;
}

function WeekDay(date){
var theDate;
if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);}
if (typeof(date)=="object"){theDate = date}
return theDate.getDay();
}
function HS_calender(){
var lis = "";
var style = "";

style +="";

var now;
if (typeof(arguments[0])=="string"){
selectDate = arguments[0].split("-");
var year = selectDate[0];
var month = parseInt(selectDate[1])-1+"";
var date = selectDate[2];
now = new Date(year,month,date);
}else if (typeof(arguments[0])=="object"){
now = arguments[0];
}
var lastMonthEndDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate();
var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01");
var thisMonthLastDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01");
var thisMonthEndDate = thisMonthLastDate.getDate();
var thisMonthEndDay = thisMonthLastDate.getDay();
var todayObj = new Date();
today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate();

for (i=0; i
lis = "

  • "+lastMonthEndDate+"
  • " + lis;
    lastMonthEndDate--;
    }
    for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date

    if(today == now.getFullYear()+"-"+now.getMonth()+"-"+i){
    var todayString = now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-"+i;
    lis += "

  • "+i+"
  • ";
    }else{
    lis += "
  • "+i+"
  • ";
    }

    }
    var j=1;
    for (i=thisMonthEndDay; i<6; i++){ // Next Month's Date
    lis += "
  • "+j+"
  • ";
    j++;
    }
    lis += style;

    var CalenderTitle = "»";
    CalenderTitle += "«";
    CalenderTitle += ""+now.getFullYear()+""+(parseInt(now.getMonth())+1).toString()+"月";

    if (arguments.length>1){
    arguments[1].parentNode.parentNode.getElementsByTagName_r("ul")[1].innerHTML = lis;
    arguments[1].parentNode.innerHTML = CalenderTitle;

    }else{
    var CalenderBox = style+"

    "+CalenderTitle+"
    "+lis+"
    ";
    return CalenderBox;
    }
    }
    function _selectThisDay(d){
    var boxObj = d.parentNode.parentNode.parentNode.parentNode.parentNode;
    boxObj.targetObj.value = d.title;
    boxObj.parentNode.removeChild(boxObj);
    }
    function closeCalender(d){
    var boxObj = d.parentNode.parentNode.parentNode;
    boxObj.parentNode.removeChild(boxObj);
    }

    function CalenderselectYear(obj){
    var opt = "";
    var thisYear = obj.innerHTML;
    for (i=1970; i<=2020; i++){
    if (i==thisYear){
    opt += ""+i+"";
    }else{
    opt += ""+i+"";
    }
    }
    opt = "";
    obj.parentNode.innerHTML = opt;
    }

    function selectThisYear(obj){
    HS_calender(obj.value+"-"+obj.parentNode.parentNode.getElementsByTagName_r("span")[1].getElementsByTagName_r("a")[0].innerHTML+"-1",obj.parentNode);
    }

    function CalenderselectMonth(obj){
    var opt = "";
    var thisMonth = obj.innerHTML;
    for (i=1; i<=12; i++){
    if (i==thisMonth){
    opt += ""+i+"";
    }else{
    opt += ""+i+"";
    }
    }
    opt = "";
    obj.parentNode.innerHTML = opt;
    }
    function selectThisMonth(obj){
    HS_calender(obj.parentNode.parentNode.getElementsByTagName_r("span")[0].getElementsByTagName_r("a")[0].innerHTML+"-"+obj.value+"-1",obj.parentNode);
    }
    function HS_setDate(inputObj){
    var calenderObj = document.createElement("span");
    calenderObj.innerHTML = HS_calender(new Date());
    calenderObj.style.position = "absolute";
    calenderObj.targetObj = inputObj;
    inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值