各位老大,制作的原理我都知道了,就是想看看源代码
请问谁有发给我学习一下!
以下是以前一个网友提问,一个叫bbdog(贝贝狗)的回复.你的问题表述得已经很清楚了,下面我来说说我的实现方法。   
    
  1、先将日历控件在一个独立的FormRiqi中做好;   
  2、在Edit1的相应事件中(比如单击),显示上面的那个FormRiqi;   
  3、选好想要的日期后,存在全局变量gl_riqi中;   
  4、关闭FormRiqi,Edit1中的值为gl_riqi;   
    
  在实际使用中,我没有将日历的显示和文本的单击事件相关联,文本框只用来显示日期,   
  我在文本框后面放了一个带图像的Button,点那个Button,显示FormRiqi,你想怎么做   
  都行。bbdog(贝贝狗)说的原理很清楚,但我希望看看源代码,谢谢了!!

解决方案 »

  1.   

    有这样的控件下的
    InputCalendar
    WebCalendar
      

  2.   

    非常感啊,有使用ASP.NET的 日历控件,实现此功能的吗?
      

  3.   

    http://www.lingye.net/demo/calendar/js/calendar.js
      

  4.   

    是这样的,我做了一个
    一个文本框,后面加个隐藏的日历控件,再后跟一个button控件,点Button,日历控件显示,选择日期后,将值写入文本框,再将日历控件隐藏.关键是日历控件显示的时候,要占用空间,把表单挤的不成样子了不好看如何使日历控件显示的时候不占用网页的空间,请指教!
      

  5.   

    你的隐藏它!!!
    function hiddenCalendar(){getObjectById("meizzCalendarLayer").style.display = "none";};
      

  6.   

    asp.net ajaxToolkit下的CalendarExtender  轻松实现此功能
      

  7.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title> New Document </title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <script language="JavaScript">
    <!--
    document.write("<style>");
    document.write("#__calendar{width:147px;margin:0;padding:0;}");
    document.write("#calendarTable{ margin:0;padding:0;border:1px solid #000;}");
    document.write("th,td{margin:0;padding:0px}");
    document.write("#calendarTable th ,#calendarTable td{font:12px/20px 宋体,Arial,sans-serif;text-align:center;}");
    document.write("#calendarTable thead th.week{border-top:1px solid #CCC;border-bottom:1px solid #ccc;background:#EEE;}");
    document.write("#calendarTable thead tr.function th{border:1px solid #fff}");
    document.write("#calendarTable thead tr.top{letter-spacing:1px;}");
    document.write("#calendarTable thead a{color:#000;width:19px;height:18px;text-decoration:none;display:block;border:1px solid #ccc;background:#E1F1FF;}");
    document.write("#calendarTable tbody a:hover{color:#990;width:19px;height:18px;text-decoration:none;display:block;border:1px solid #ccc;background:#E1F1FF;}");
    document.write("#calendarTable thead a.today{width:98% !important;width:100%}");
    document.write("#calendarTable thead a.today:hover{width:98% !important;width:100%}");
    document.write("#calendarTable td{width:21px;height:20px;border-bottom:1px solid #E6E6E6;color:#fff;}");
    document.write("#calendarTable th{height:21px;}");
    document.write("#calendarTable tr.com{background:#fff;}");
    document.write("#calendarTable tr.cur{background:#F0FAFF;}");
    document.write("#calendarTable tbody a{color:#000;width:19px;height:18px;text-decoration:none;display:block;border:1px solid #fff;}");
    document.write("#calendarTable tbody a:hover{color:#990;width:19px;height:18px;text-decoration:none;border:1px solid #E6E6E6;background:#E1F1FF;display:block;}");
    document.write("#calendarTable tbody a.today{color:#c00;border:1px solid #DBDBDB;background:#CCE4FF;}");
    document.write("#calendarTable tbody a.today:hover{color:#990;border:1px solid #DBDBDB;background:#CCE4FF;}");
    document.write("#calendarTable tbody a.week{color:#c00;}");
    document.write("</style>");
    document.write("<div id='__calendar' style='position:absolute;display:none;'></div>");
    document.write("<table cellspacing=\"0\" cellpadding=\"0\" id=\"calendarTable\"><thead><tr class=\"top\"><th>&nbsp;</th><th colspan=\"5\" id=\"sohwdate\"></th><th><a href=\"javascript:void(0);\" title=\"close\" onclick=\"shut()\">×</a></th></tr><tr class=\"function\"><th><a href=\"javascript:void(0);\" title=\"向前翻1年\" onclick=\"preYear()\">&lt;&lt;</a></th><th><a href=\"javascript:void(0);\" title=\"向前翻1月\" onclick=\"preMonth()\">&lt;</a></th><th colspan=\"3\"><a href=\"javascript:void(0);\" class=\"today\" title=\"今天\" onclick=\"getDate('0')\">今天</a></th><th><a href=\"javascript:void(0);\" title=\"向后翻1月\" onclick=\"nextMonth()\">&gt;</a></th><th><a href=\"javascript:void(0);\" title=\"向后翻1年\" onclick=\"nextYear()\">&gt;&gt;</a></th></tr><tr><th class=\"week\">日</th><th class=\"week\">一</th><th class=\"week\">二</th><th class=\"week\">三</th><th class=\"week\">四</th><th class=\"week\">五</th><th class=\"week\">六</th></thead><tbody id=\"calendarTbody\"></tbody></table>");
    var objouter;
    var objInput;
    var isShow = true;
    objouter=document.getElementById("__calendar"); 
    var calendarTable = document.getElementById("calendarTable");
    objouter.appendChild(calendarTable);
    function setday(obj){objInput = obj;writeDate();sohwDate();objouter.style.top =getAbsoluteHeight(objInput)+getAbsoluteTop(objInput);objouter.style.left =getAbsoluteLeft(objInput);objouter.style.display = "block";}
    function getAbsoluteHeight(ob){return ob.offsetHeight;}
    function getAbsoluteWidth(ob){return ob.offsetWidth;}
    function getAbsoluteLeft(ob){var s_el=0;el=ob;while(el){s_el=s_el+el.offsetLeft;el=el.offsetParent;}; return s_el}
    function getAbsoluteTop(ob){var s_el=0;el=ob;while(el){s_el=s_el+el.offsetTop ;el=el.offsetParent;}; return s_el}
    var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); 
    var toDay = new Date();
    var tempYear = toDay.getFullYear();
    var tempMonth = toDay.getMonth();
    var tbody = document.getElementById("calendarTbody"); 
    var sohwId = document.getElementById("sohwdate");
    function getDays(month, year)
    {  
     if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28; 
     else return daysInMonth[month]; 

    function writeDate() {  
     var curCal = new Date(tempYear,tempMonth ,1);
     var startDay = curCal.getDay();
     var daily = 0;
     var today = toDay.getDate();
     if(tempYear != toDay.getFullYear() || tempMonth != toDay.getMonth()) today = -1;
     var todayStyle = "";
     var weekEndStyle = "";
     clear();
     var intDaysInMonth =getDays(curCal.getMonth(), curCal.getFullYear());
     var weeks = (intDaysInMonth + startDay) % 7 == 0 ? (intDaysInMonth + startDay) / 7 : parseInt((intDaysInMonth + startDay ) / 7) + 1; 
     for (var intWeek = 1; intWeek <= weeks; intWeek++){ 
      var tr = document.createElement("tr");
      tr.setAttribute("onmouseover","javascript:this.className='cur'");  
      tr.setAttribute("onmouseout","javascript:this.className='com'");
      tr.onmouseover = function (){this.className = "cur";}
      tr.onmouseout = function (){this.className = "com";}
      for (var intDay = 0;intDay < 7;intDay++){   
       var td = document.createElement("td");
       if ((intDay == startDay) && (0 == daily)) 
        daily = 1; 
        
       if(today == daily)  todayStyle="today";
       
       if (intDay == 6 || intDay == 0) weekEndStyle = "week" ;
       
       if ((daily > 0) && (daily <= intDaysInMonth)) 
       { 
        td.innerHTML = "<a href=\"javascript:void(0);\" class=\""+ weekEndStyle + todayStyle +"\" onclick=\"getDate('"+daily+"')\" title=\""+eval(tempMonth+1)+"月"+daily+"日\">" + daily + "</a>";
        todayStyle = "";
        weekEndStyle = "";
        daily++; 
       }else{ 
        td.innerHTML = "&nbsp;"; 
        todayStyle = "";
        weekEndStyle = "";
       }   
       tr.appendChild(td);   
      }
      tbody.appendChild(tr);
     } 
    }
      

  8.   

    function getDate(day){
     var year , month ,date;
     if(day == "0"){
      year = toDay.getFullYear();
      month = eval(toDay.getMonth()+1) < 10 ? "0"+eval(toDay.getMonth()+1) : eval(toDay.getMonth()+1);
      date = toDay.getDate() < 10 ? "0"+toDay.getDate() : toDay.getDate();
     }else{
      year = tempYear;
      month = eval(tempMonth+1) < 10 ? "0"+eval(tempMonth+1) : eval(tempMonth+1);
      date = day < 10 ? "0"+day : day;  
     }
     objInput.value = year + "-" + month +"-"+ date;
     close();
    }
    function sohwDate(){
     sohwId.innerHTML = tempYear + "年" + eval(tempMonth+1) +"月";
    }
    function preYear(){
     isShow = false;
     if(tempYear > 999 && tempYear < 10000){
      tempYear--;
     }else{
      alert("年份超出范围(1000-9999)!");
     }
     sohwDate();
     writeDate();
    }
    function nextYear(){
     isShow = false;
     if(tempYear > 999 && tempYear < 10000){
      tempYear++;
     }else{
      alert("年份超出范围(1000-9999)!");
     }
     sohwDate();
     writeDate();
    }
    function preMonth(){
     isShow = false;
     if(tempMonth >= 1){tempMonth--}else{tempYear--;tempMonth = 11;}
     sohwDate();
     writeDate();
    }
    function nextMonth(){
     isShow = false;
     if(tempMonth == 11){tempYear++;tempMonth = 0}else{tempMonth++}
     sohwDate();
     writeDate();
    }
    function clear(){
     var nodes = tbody.childNodes;
     var nodesNum = nodes.length; 
     for(var i=nodesNum-1;i>=0;i--) { 
      tbody.removeChild(nodes[i]); 
     }
    }
    function shut(){
     close();
    }
    function close(){
     tempYear = toDay.getFullYear();
     tempMonth = toDay.getMonth();
     objouter.style.display = "none"
     objouter.style.top = 0;
     objouter.style.left = 0;
    }
    function vent(event){
     if(document.all){
      if(isShow){
       if (window.event.srcElement != objouter && window.event.srcElement != objInput) close();
       isShow = true;
       return;
      }
      isShow = true;  
     }else{
      if(isShow){
       if(event.target != objouter && event.target != objInput) close();
       isShow = true;
      }
      isShow = true;
     }
    }
    document.onclick = vent;
    //-->
    </script>
    </head>
    <body>
    <br />
    <br />
    <br />
    &nbsp;&nbsp;<input type="text" onfocus="setday(this)" />
    </body>
    </html>
      

  9.   

    <SCRIPT LANGUAGE="JavaScript">
    <!-- Begin
    var dDate = new Date();
    var dCurMonth = dDate.getMonth();
    var dCurDayOfMonth = dDate.getDate();
    var dCurYear = dDate.getFullYear();
    var objPrevElement = new Object();
    function fToggleColor(myElement) {
    var toggleColor = "#ff0000";
    if (myElement.id == "calDateText") {
    if (myElement.color == toggleColor) {
    myElement.color = "";
    } else {
    myElement.color = toggleColor;
    }
    } else if (myElement.id == "calCell") {
    for (var i in myElement.children) {
    if (myElement.children[i].id == "calDateText") {
    if (myElement.children[i].color == toggleColor) {
    myElement.children[i].color = "";
    } else {
    myElement.children[i].color = toggleColor;
    }
    }
    }
    }
    }
    function fSetSelectedDay(myElement){
    if (myElement.id == "calCell") {
    if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
    myElement.bgColor = "#B0FFC2";
    objPrevElement.bgColor = "";
    document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerText);
    objPrevElement = myElement;
    }
    }
    }
    function fGetDaysInMonth(iMonth, iYear) {
    var dPrevDate = new Date(iYear, iMonth, 0);
    return dPrevDate.getDate();
    }
    function fBuildCal(iYear, iMonth, iDayStyle) {
    var aMonth = new Array();
    aMonth[0] = new Array(7);
    aMonth[1] = new Array(7);
    aMonth[2] = new Array(7);
    aMonth[3] = new Array(7);
    aMonth[4] = new Array(7);
    aMonth[5] = new Array(7);
    aMonth[6] = new Array(7);
    var dCalDate = new Date(iYear, iMonth-1, 1);
    var iDayOfFirst = dCalDate.getDay();
    var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
    var iVarDate = 1;
    var i, d, w;
    if (iDayStyle == 2) {
    aMonth[0][0] = "Sunday";
    aMonth[0][1] = "Monday";
    aMonth[0][2] = "Tuesday";
    aMonth[0][3] = "Wednesday";
    aMonth[0][4] = "Thursday";
    aMonth[0][5] = "Friday";
    aMonth[0][6] = "Saturday";
    } else if (iDayStyle == 1) {
    aMonth[0][0] = "Sun";
    aMonth[0][1] = "Mon";
    aMonth[0][2] = "Tue";
    aMonth[0][3] = "Wed";
    aMonth[0][4] = "Thu";
    aMonth[0][5] = "Fri";
    aMonth[0][6] = "Sat";
    } else {
    aMonth[0][0] = "Su";
    aMonth[0][1] = "Mo";
    aMonth[0][2] = "Tu";
    aMonth[0][3] = "We";
    aMonth[0][4] = "Th";
    aMonth[0][5] = "Fr";
    aMonth[0][6] = "Sa";
    }
    for (d = iDayOfFirst; d < 7; d++) {
    aMonth[1][d] = iVarDate;
    iVarDate++;
    }
    for (w = 2; w < 7; w++) {
    for (d = 0; d < 7; d++) {
    if (iVarDate <= iDaysInMonth) {
    aMonth[w][d] = iVarDate;
    iVarDate++;
    }
    }
    }
    return aMonth;
    }
    function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
    var myMonth;
    var sDateTextSize="10px"
    var sDateTextWeight="nomal"
    myMonth = fBuildCal(iYear, iMonth, iDayStyle);
    document.write("<table border='0' cellpadding='0' cellspacing='1' bgcolor='#ffffff'>")
    document.write("<tr>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][0] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][1] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][2] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][3] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][4] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][5] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Verdana;FONT-SIZE:10px;FONT-WEIGHT: bold'>" + myMonth[0][6] + "</td>");
    document.write("</tr>");
    for (w = 1; w < 7; w++) {
    document.write("<tr>")
    for (d = 0; d < 7; d++) {
    document.write("<td align='center' valign='middle' width='" + iCellWidth + "' height='" + iCellHeight + "' id=calCell style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
    if (!isNaN(myMonth[w][d])) {
    document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;FONT-FAMILY:Verdana;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>" + myMonth[w][d] + "</font>");
    } else {
    document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;FONT-FAMILY:Verdana;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>&nbsp;</font>");
    }
    document.write("</td>")
    }
    document.write("</tr>");
    }
    document.write("</table>")
    }
    function fUpdateCal(iYear, iMonth) {
    myMonth = fBuildCal(iYear, iMonth);
    objPrevElement.bgColor = "";
    document.all.calSelectedDate.value = "";
    for (w = 1; w < 7; w++) {
    for (d = 0; d < 7; d++) {
    if (!isNaN(myMonth[w][d])) {
    calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
    } else {
    calDateText[((7*w)+d)-7].innerText = " ";
    }
    }
    }
    }
    // End -->
    </script>
    <body>
    <form name="frmCalendarSample" method="post" action="">
    <input type="hidden" name="calSelectedDate" value="">
    <table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
    <tr>
    <td>
    <select name="tbSelMonth" onchange='fUpdateCal(frmCalendarSample.tbSelYear.value, frmCalendarSample.tbSelMonth.value)'>
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
    </select>
    <select name="tbSelYear" onchange='fUpdateCal(frmCalendarSample.tbSelYear.value, frmCalendarSample.tbSelMonth.value)'>
    <option value="1998">1998</option>
    <option value="1999">1999</option>
    <option value="2000">2000</option>
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>
    <script language="JavaScript">
    var dCurDate = new Date();
    fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 30, 30, "12px", "bold", 1);
    </script>
    </td>
    </tr>
    </table>
    </form>