Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期选择器问题_Javascript - Fatal编程技术网

Javascript 日期选择器问题

Javascript 日期选择器问题,javascript,Javascript,我正在使用一个包含三个文本字段的示例程序,单击它们将显示一个日期选择器,一旦选择日期,该日期将显示在该字段中。第一个字段工作正常,但下两个字段不工作,即显示日期选择器,但未将拾取的值设置为该字段。这是我的示例代码 <script language="javaScript" type="text/javascript" src="calendar.js"></script> <link href="style/calendar.css" rel="styles

我正在使用一个包含三个文本字段的示例程序,单击它们将显示一个日期选择器,一旦选择日期,该日期将显示在该字段中。第一个字段工作正常,但下两个字段不工作,即显示日期选择器,但未将拾取的值设置为该字段。这是我的示例代码

  <script language="javaScript" type="text/javascript" src="calendar.js"></script>
  <link href="style/calendar.css" rel="stylesheet" type="text/css">
 ........
 <table id="calenderTable">
   <tbody id="calenderTableHead">
     <tr>
       <td colspan="4" align="center">
     <select onChange="showCalenderBody(createCalender(document.getElementById('selectYear').value,
                                               this.selectedIndex, false));"
                                                        id="selectMonth">
              <option value="0">Jan</option>
              <option value="1">Feb</option>
              <option value="2">Mar</option>
              <option value="3">Apr</option>
              <option value="4">May</option>
              <option value="5">Jun</option>
              <option value="6">Jul</option>
              <option value="7">Aug</option>
              <option value="8">Sep</option>
              <option value="9">Oct</option>
              <option value="10">Nov</option>
              <option value="11">Dec</option>
          </select>
        </td>
        <td colspan="2" align="center">
    <select onChange="showCalenderBody(createCalender(this.value,
      document.getElementById('selectMonth').selectedIndex, false));"
          id="selectYear">
    </select>
        </td>
       <td align="center">
    <a href="#" onClick="closeCalender();">
          <font color="#003333" size="+1">X</font>
        </a>
   </td>
</tr>
   </tbody>
   <tbody id="calenderTableDays">
     <tr style="">
       <td>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td>
       <td>Thu</td><td>Fri</td><td>Sat</td>
     </tr>
   </tbody>
   <tbody id="calender"></tbody>
</table>

........
简
二月
破坏
四月
也许
六月
七月
八月
九月
十月
十一月
12月
太阳
苏弗里萨

calender.js

  // Array of max days in month in a year and in a leap year
 monthMaxDays   = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 monthMaxDaysLeap= [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 hideSelectTags = [];

 function getRealYear(dateObj) 
 {
return (dateObj.getYear() % 100) + (((dateObj.getYear() % 100) < 39) ? 2000 : 1900);
}

function getDaysPerMonth(month, year)
{
/* 
Check for leap year. These are some conditions to check year is leap year or not...
1.Years evenly divisible by four are normally leap years, except for... 
2.Years also evenly divisible by 100 are not leap years, except for... 
3.Years also evenly divisible by 400 are leap years. 
*/
if ((year % 4) == 0)
{
    if ((year % 100) == 0 && (year % 400) != 0)
        return monthMaxDays[month];

    return monthMaxDaysLeap[month];
}
else
    return monthMaxDays[month];
 }

 function createCalender(year, month, day)
 {
 // current Date
var curDate = new Date();
var curDay = curDate.getDate();
var curMonth = curDate.getMonth();
var curYear = getRealYear(curDate)

 // if a date already exists, we calculate some values here
if (!year)
{
    var year = curYear;
    var month = curMonth;
}

var yearFound = 0;
for (var i=0; i<document.getElementById('selectYear').options.length; i++)
{
    if (document.getElementById('selectYear').options[i].value == year)
    {
        document.getElementById('selectYear').selectedIndex = i;
        yearFound = true;
        break;
    }
}
if (!yearFound)
{
    document.getElementById('selectYear').selectedIndex = 0;
    year = document.getElementById('selectYear').options[0].value;      
}
document.getElementById('selectMonth').selectedIndex = month;

 // first day of the month.
var fristDayOfMonthObj = new Date(year, month, 1);
var firstDayOfMonth = fristDayOfMonthObj.getDay();

continu     = true;
firstRow    = true;
var x   = 0;
var d   = 0;
var trs = []
var ti = 0;
while (d <= getDaysPerMonth(month, year))
{
    if (firstRow)
    {
        trs[ti] = document.createElement("TR");
        if (firstDayOfMonth > 0)
        {
            while (x < firstDayOfMonth)
            {
                trs[ti].appendChild(document.createElement("TD"));
                x++;
            }
        }
        firstRow = false;
        var d = 1;
    }
    if (x % 7 == 0)
    {
        ti++;
        trs[ti] = document.createElement("TR");
    }
    if (day && d == day)
    {
        var setID = 'calenderChoosenDay';
        var styleClass = 'choosenDay';
        var setTitle = 'this day is currently selected';
    }
    else if (d == curDay && month == curMonth && year == curYear)
    {
        var setID = 'calenderToDay';
        var styleClass = 'toDay';
        var setTitle = 'this day today';
    }
    else
    {
        var setID = false;
        var styleClass = 'normalDay';
        var setTitle = false;
    }
    var td = document.createElement("TD");
    td.className = styleClass;
    if (setID)
    {
        td.id = setID;
    }
    if (setTitle)
    {
        td.title = setTitle;
    }
    td.onmouseover = new Function('highLiteDay(this)');
    td.onmouseout = new Function('deHighLiteDay(this)');
    if (targetEl)
        td.onclick = new Function('pickDate('+year+', '+month+', '+d+')');
    else
        td.style.cursor = 'default';
    td.appendChild(document.createTextNode(d));
    trs[ti].appendChild(td);
    x++;
    d++;
}
return trs;
 }

 function showCalender(elPos, tgtEl)
{
targetEl = false;

if (document.getElementById(tgtEl))
{
    targetEl = document.getElementById(tgtEl);
}
else
{
    if (document.forms[0].elements[tgtEl])
    {
        targetEl = document.forms[0].elements[tgtEl];
    }
}
var calTable = document.getElementById('calenderTable');

var positions = [0,0];
var positions = getParentOffset(elPos, positions);  
calTable.style.left = positions[0]+'px';        
calTable.style.top = positions[1]+'px';         

calTable.style.display='block';

var matchDate = new RegExp('^([0-9]{2})-([0-9]{2})-([0-9]{4})$');
var m = matchDate.exec(targetEl.value);
if (m == null)
{
    trs = createCalender(false, false, false);
    showCalenderBody(trs);
}
else
{
    if (m[1].substr(0, 1) == 0)
        m[1] = m[1].substr(1, 1);
    if (m[2].substr(0, 1) == 0)
        m[2] = m[2].substr(1, 1);
    m[2] = m[2] - 1;
    trs = createCalender(m[3], m[2], m[1]);
    showCalenderBody(trs);
}

hideSelect(document.body, 1);
 }
  function showCalenderBody(trs)
 {
var calTBody = document.getElementById('calender');
while (calTBody.childNodes[0])
{
    calTBody.removeChild(calTBody.childNodes[0]);
}
for (var i in trs)
{
    calTBody.appendChild(trs[i]);
}
}
function setYears(sy, ey)
{
 // current Date
var curDate = new Date();
var curYear = getRealYear(curDate);
if (sy)
    startYear = curYear;
if (ey)
    endYear = curYear;
document.getElementById('selectYear').options.length = 0;
var j = 0;
for (y=ey; y>=sy; y--)
{
    document.getElementById('selectYear')[j++] = new Option(y, y);
}  
 }
 function hideSelect(el, superTotal)
 {
if (superTotal >= 100)
{
    return;
}

var totalChilds = el.childNodes.length;
for (var c=0; c<totalChilds; c++)
{
    var thisTag = el.childNodes[c];
    if (thisTag.tagName == 'SELECT')
    {
        if (thisTag.id != 'selectMonth' && thisTag.id != 'selectYear')
        {
            var calenderEl = document.getElementById('calenderTable');
            var positions = [0,0];
            var positions = getParentOffset(thisTag, positions);    // nieuw
            var thisLeft    = positions[0];
            var thisRight   = positions[0] + thisTag.offsetWidth;
            var thisTop = positions[1];
            var thisBottom  = positions[1] + thisTag.offsetHeight;
            var calLeft = calenderEl.offsetLeft;
            var calRight    = calenderEl.offsetLeft + calenderEl.offsetWidth;
            var calTop  = calenderEl.offsetTop;
            var calBottom   = calenderEl.offsetTop + calenderEl.offsetHeight;

            if (
                (
                    /* check if it overlaps horizontally */
                    (thisLeft >= calLeft && thisLeft <= calRight)
                        ||
                    (thisRight <= calRight && thisRight >= calLeft)
                        ||
                    (thisLeft <= calLeft && thisRight >= calRight)
                )
                    &&
                (
                    /* check if it overlaps vertically */
                    (thisTop >= calTop && thisTop <= calBottom)
                        ||
                    (thisBottom <= calBottom && thisBottom >= calTop)
                        ||
                    (thisTop <= calTop && thisBottom >= calBottom)
                )
            )
            {
                hideSelectTags[hideSelectTags.length] = thisTag;
                thisTag.style.display = 'none';
            }
        }

    }
    else if(thisTag.childNodes.length > 0)
    {
        hideSelect(thisTag, (superTotal+1));
    }
}
 }
function closeCalender()
  {
        for (var i=0; i<hideSelectTags.length; i++)
{
    hideSelectTags[i].style.display = 'block';
}
hideSelectTags.length = 0;
document.getElementById('calenderTable').style.display='none';
}
 function highLiteDay(el)
{
el.className = 'hlDay'; 
}
function deHighLiteDay(el)
{
if (el.id == 'calenderToDay')
    el.className = 'toDay';
else if (el.id == 'calenderChoosenDay')
    el.className = 'choosenDay';
else
    el.className = 'normalDay';
}
function pickDate(year, month, day)
{ 
month++;
day = day < 10 ? '0'+day : day;
month   = month < 10 ? '0'+month : month;
if (!targetEl)
{
    alert('target for date is not set yet');
}
else
{
    targetEl.value= day+'-'+month+'-'+year;
    closeCalender();
  }  
     }
   function getParentOffset(el, positions)
 {
positions[0] += el.offsetLeft;
positions[1] += el.offsetTop;
   if (el.offsetParent)
         positions = getParentOffset(el.offsetParent, positions);
return positions;
 }
//一年和闰年的最大月天数数组
月最大天数=[31,28,31,30,31,30,31,31,30,31,30,31];
monthMaxDaysLeap=[31,29,31,30,31,30,31,31,30,31];
hideSelectTags=[];
函数getRealYear(dateObj)
{
return(dateObj.getYear()%100)+(dateObj.getYear()%100)<39)?2000:1900;
}
函数getDaysPerMonth(月,年)
{
/* 
检查闰年。这些是检查年份是否为闰年的一些条件。。。
1.除……外,可被四整除的年份通常是闰年。。。
也可以被100整除的年份不是闰年,除了。。。
也可以被400整除的年份是闰年。
*/
如果((第%4年)=0)
{
如果((年份%100)==0&(年份%400)!=0)
返回月最大天数[月];
返回月MaxDaysLeap[月];
}
其他的
返回月最大天数[月];
}
函数createCalendar(年、月、日)
{
//当前日期
var curDate=新日期();
var curDay=curDate.getDate();
var curMonth=curDate.getMonth();
var curYear=getRealYear(curDate)
//如果日期已经存在,我们在这里计算一些值
如果(!年)
{
var年=curYear;
var月=curMonth;
}
var=0;
对于(变量i=0;i=sy;y--)
{
document.getElementById('selectYear')[j++]=新选项(y,y);
}  
}
函数hideSelect(el,超总计)
{
如果(超总数>=100)
{
返回;
}
var totalChilds=el.childNodes.length;
对于(var c=0;c=calLeft&&thisleet=calTop&&thisttop 0)
{
hideSelect(此标签,(superTotal+1));
}
}
}
功能关闭日历()
{

对于(var i=0;iI在我的工作文件夹中有calendar.js,这就是它显示日期选择器的原因。向我们显示
calendar.js中的代码是我的意思,因为它没有取值,所以您单击了calendar。您能告诉我您使用了哪个jquery calendar吗?如何知道我使用了哪个jqueryusage@RAVITEJA我不明白你在问什么。你能澄清一下吗?