• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    “javascript做的日歷”改進版

    發布: 2007-6-30 18:56 | 作者: admin | 來源: | 查看: 12次 | 進入軟件測試論壇討論

    領測軟件測試網 這是對原日歷控件做了改進,始之更符合中國人的習慣。改進后的代碼如下面,將其存為rl.asp然后在需要調用的文件中加入<!--#INCLUDE file="rl.asp" -->,在控件中的調用如下,主要為onfocus和onblur事件<input name="gcrq" type="text" id="gcrq" value="<%=date(now)%>" onFocus="CreateMonthView(this)" onBlur="DeleteMonthView(this)">
    rl.asp主要內容
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <Script language="javascript">

    <!--

    //this is jsMonthView 1.0, author is Chinese DengKang (2002-07-12).

    //I allow your do any modify, but i don@#t bear any liability.

    //browser: IE 4 and later

    function DefineMonthView(theTextObject){ //the month view construct function

    this.GetOnlyName = function( ){ //create one and only name on the document

    var theName = "MV"; //prefix

    var aryName = new Array();

    aryName[0] = "_MonthView"; //the month view main body@#s name postfix

    aryName[1] = "_MonthGrid"; //the month view day area@#s name postfix

    aryName[2] = "_goPreviousMonth"; //the month view go previous month button@#s name postfix

    aryName[3] = "_goNextMonth"; //the month view go next month button@#s name postfix

    aryName[4] = "_YearList"; //the month view year list@#s name postfix

    aryName[5] = "_MonthList"; //the month view month list@#s name postfix

    aryName[6] = "_DayList"; //keep the month view current day@#s element name postfix

    var i = -1, j = 0, maxi = 2000;

    var exTag = true;

    while ((exTag == true) && (i < maxi)){

    i++;

    exTag = false;

    for (j=0;j<aryName.length;j++){

    if (document.all.item(theName + i.toString() + aryName[j]) != null){

    exTag = true;

    }

    }

    }

    if (exTag == false){

    return(theName + i.toString());

    }else{

    return("_" + theName);

    }

    }

    var theName = this.GetOnlyName();

    this.Name = theName; //the month view name

    this.Source = theTextObject; //the month view act on theTextObject

    this.MinYear = 1970; //year list min value

    //return between 1000 and 9999 and <= this.MaxYear

    this.MaxYear = 2030; //year list max value

    //return between 1000 and 9999 and >= this.MinYear

    this.Width = 200; //the month view main body@#s width

    this.Height = 120; //the month view main body@#s height

    this.DateFormat = "<yyyy>-<mm>-<dd>"; //the date format

    //<yy> or <yyyy> is year, <m> or <mm> is digital format month, <MMM> or <MMMMMM> is character format month, <d> or <dd> is day, other char unchanged

    //this function setting year, month and day sequence

    //example:

    // <yyyy>-<mm>-<dd> : 2002-04-01

    // <yy>.<m>.<d> : 02.4.1

    // <yyyy> Year <MMMMMM> Month <d> Day : 2002 Year April Month 1 Day

    // <m>/<d>/<yy> : 4/1/02

    // <MMM> <dd>, <yyyy> : Apr 01, 2002

    // <MMMMMM> <d>, <yyyy> : April 1, 2002

    // <dd> <MMM> <yyyy> : 01 Apr 2002

    // <dd>/<mm>/<yyyy> : 01/04/2002

    this.UnselectBgColor = "#FFFFFF"; //the month view default background color

    this.SelectedBgColor = "#808080"; //the selected date background color

    this.SelectedColor = "#FFFFFF"; //the selected date front color

    this.DayBdWidth = "1"; //the day unit border width, unit is px

    this.DayBdColor = this.UnselectBgColor; //the day unit border color,default is this.UnselectBgColor

    this.TodayBdColor = "#FF0000"; //denote today@#s date border color

    this.InvalidColor = "#808080"; //it is not current month day front color

    this.ValidColor = "#0000FF"; //it is current month day front color

    this.WeekendBgColor = this.UnselectBgColor; //the weekend background color, default is this.UnselectBgColor

    this.WeekendColor = this.ValidColor; //the weekend front color, default is this.ValidColor

    this.YearListStyle = "font-size:12px; font-family:宋體;"; //the year list@#s style

    this.MonthListStyle = "font-size:12px; font-family:宋體;"; //the month list@#s style

    this.MonthName = new Array(); //month name list, font is include this.MonthListStyle

    this.MonthName[0] = "1月";

    this.MonthName[1] = "2月";

    this.MonthName[2] = "3月";

    this.MonthName[3] = "4月";

    this.MonthName[4] = "5月";

    this.MonthName[5] = "6月";

    this.MonthName[6] = "7月";

    this.MonthName[7] = "8月";

    this.MonthName[8] = "9月";

    this.MonthName[9] = "10月";

    this.MonthName[10] = "11月";

    this.MonthName[11] = "12月";

    this.TitleStyle = "cursor:default; color:#000000; background-color:" + this.UnselectBgColor + "; font-size:16px; font-weight:bolder; font-family:Times new roman; text-align:center; vertical-align:bottom;"; //the month view title area@#s style

    this.WeekName = new Array(); //week name list, font is include this.TitleStyle

    this.WeekName[0] = "日";

    this.WeekName[1] = "一";

    this.WeekName[2] = "二";

    this.WeekName[3] = "三";

    this.WeekName[4] = "四";

    this.WeekName[5] = "五";

    this.WeekName[6] = "六";

    this.FooterStyle = "cursor:hand; color:#000000; background-color:" + this.UnselectBgColor + "; font-size:12px; font-family:Verdana; text-align:left; vertical-align:middle;"; //the month footer area@#s style

    this.TodayTitle = "今天:"; //today tip string, font is include this.FooterStyle

    this.MonthBtStyle = "font-family:Marlett; font-size:12px;"; //the change month button style

    this.PreviousMonthText = "3"; //the go previous month button text

    //font is include this.MonthBtStyle

    this.NextMonthText = "4"; //the go next month button text

    //font is include this.MonthBtStyle

    this.MonthGridStyle = "border-width:1px; border-style:solid; border-color:#000000;"; //the month view main body@#s default style

    this.HeaderStyle = "height:32px; background-color:menu;"; //the month view header area@#s style

    this.LineBgStyle = "height:10px; background-color:" + this.UnselectBgColor + "; text-align:center; vertical-align:middle;"; //the month view title area and day area compart area background style

    this.LineStyle = "width:90%; height:1px; background-color:#000000;"; //the month view title area and day area compart area front style

    this.DayStyle = "cursor:hand; font-size:12px; font-family:Verdana; text-align:center; vertical-align:middle;"; //the month view day area@#s style

    this.OverDayStyle = "this.style.textDecoration=@#underline@#;"; //the mouse over a day style

    this.OutDayStyle = "this.style.textDecoration=@#none@#;"; //the mouse out a day style



    this.GetoffsetLeft = function(theObject){ //return theObject@#s absolute offsetLeft

    var absLeft = 0;

    var thePosition="";

    var tmpObject = theObject;

    while (tmpObject != null){

    thePosition = tmpObject.position;

    tmpObject.position = "static";

    absLeft += tmpObject.offsetLeft;

    tmpObject.position = thePosition;

    tmpObject = tmpObject.offsetParent;

    }

    return absLeft;

    }

    this.GetoffsetTop = function(theObject){ //return theObj@#s absolute offsetTop

    var absTop = 0;

    var thePosition = "";

    var tmpObject = theObject;

    while (tmpObject != null){

    thePosition = tmpObject.position;

    tmpObject.position = "static";

    absTop += tmpObject.offsetTop;

    tmpObject.position = thePosition;

    tmpObject = tmpObject.offsetParent;

    }

    return absTop;

    }

    this.GetFormatYear = function(theYear){//format theYear to 4 digit

    var tmpYear = theYear;

    if (tmpYear < 100){

    tmpYear += 1900;

    if (tmpYear < 1970){

    tmpYear += 100;

    }

    }

    if (tmpYear < this.MinYear){

    tmpYear = this.MinYear;

    }

    if (tmpYear > this.MaxYear){

    tmpYear = this.MaxYear;

    }

    return(tmpYear);

    }

    this.GetMonthDays = function(theYear, theMonth){ //get theYear and theMonth days number

    var theDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    var theMonthDay = 0, tmpYear = this.GetFormatYear(theYear);

    theMonthDay = theDays[theMonth];

    if (theMonth == 1){ //theMonth is February

    if(((tmpYear % 4 == 0) && (tmpYear % 100 != 0)) || (tmpYear % 400 == 0)){

    theMonthDay++;

    }

    }

    return(theMonthDay);

    }

    this.SetDateFormat = function(theYear, theMonth, theDay){//format a date to this.DateFormat

    var theDate = this.DateFormat;

    var tmpYear = this.GetFormatYear(theYear);



    var tmpMonth = theMonth;

    if (tmpMonth < 0){

    tmpMonth = 0;

    }

    if (tmpMonth > 11){

    tmpMonth = 11;

    }

    var tmpDay = theDay;

    if (tmpDay < 1){

    tmpDay = 1;

    }else{

    tmpDay = this.GetMonthDays(tmpYear, tmpMonth);

    if (theDay < tmpDay){

    tmpDay = theDay;

    }

    }

    theDate = theDate.replace(/<yyyy>/g, tmpYear.toString());

    theDate = theDate.replace(/<yy>/g, tmpYear.toString().substr(2,2));

    theDate = theDate.replace(/<MMMMMM>/g, this.MonthName[tmpMonth]);

    theDate = theDate.replace(/<MMM>/g, this.MonthName[tmpMonth].substr(0,3));

    if (theMonth < 9){

    theDate = theDate.replace(/<mm>/g, "0" + (tmpMonth + 1).toString());

    }else{

    theDate = theDate.replace(/<mm>/g, (tmpMonth + 1).toString());

    }

    theDate = theDate.replace(/<m>/g, (tmpMonth + 1).toString());

    if (theDay < 10){

    theDate = theDate.replace(/<dd>/g, "0" + tmpDay.toString());

    }else{

    theDate = theDate.replace(/<dd>/g, tmpDay.toString());

    }

    theDate = theDate.replace(/<d>/g, tmpDay.toString());

    return(theDate);

    }
    this.GetTextDate = function(theString){ //convert a string to a date, if the string is not a date, return a empty string
    var i = 0, tmpChar = "", find_tag = "";
    var start_at = 0, end_at = 0, year_at = 0, month_at = 0, day_at = 0;
    var tmp_at = 0, one_at = 0, two_at = 0, one_days = 0, two_days = 0;
    var aryDate = new Array();
    var tmpYear = -1, tmpMonth = -1, tmpDay = -1;
    var tmpDate = theString.toLowerCase();
    var defDate = "";
    end_at = tmpDate.length;
    for (i=1;i<end_at;i++){
    if (tmpDate.charAt(i)=="0"){
    tmpChar = tmpDate.charAt(i-1);
    if (tmpChar<"0" || tmpChar>"9"){
    tmpDate = tmpDate.substr(0,i-1) + "-" + tmpDate.substr(i+1);
    }
    }
    }
    for (i=0;i<9;i++){
    tmpDate = tmpDate.replace(this.MonthName[i].toLowerCase().substr(0,3), "-00" + (i+1).toString() + "-");
    }
    for (i=9;i<12;i++){
    tmpDate = tmpDate.replace(this.MonthName[i].toLowerCase().substr(0,3), "-0" + (i+1).toString() + "-");
    }
    tmpDate = tmpDate.replace(/jan/g, "-001-");
    tmpDate = tmpDate.replace(/feb/g, "-002-");
    tmpDate = tmpDate.replace(/mar/g, "-003-");
    tmpDate = tmpDate.replace(/apr/g, "-004-");
    tmpDate = tmpDate.replace(/may/g, "-005-");
    tmpDate = tmpDate.replace(/jun/g, "-006-");
    tmpDate = tmpDate.replace(/jul/g, "-007-");
    tmpDate = tmpDate.replace(/aug/g, "-008-");
    tmpDate = tmpDate.replace(/sep/g, "-009-");
    tmpDate = tmpDate.replace(/oct/g, "-010-");
    tmpDate = tmpDate.replace(/nov/g, "-011-");
    tmpDate = tmpDate.replace(/dec/g, "-012-");
    for (i=0;i<tmpDate.length;i++){
    tmpChar = tmpDate.charAt(i);
    if ((tmpChar<"0" || tmpChar>"9") && (tmpChar != "-")){
    tmpDate = tmpDate.replace(tmpChar,"-")
    }
    }
    while(tmpDate.indexOf("--") != -1){
    tmpDate = tmpDate.replace(/--/g,"-");
    }
    start_at = 0;
    end_at = tmpDate.length-1;
    while (tmpDate.charAt(start_at)=="-"){
    start_at++;
    }
    while (tmpDate.charAt(end_at)=="-"){
    end_at--;
    }
    if (start_at < end_at+1){
    tmpDate = tmpDate.substring(start_at,end_at+1);
    }else{
    tmpDate = "";
    }
    aryDate = tmpDate.split("-");
    if (aryDate.length != 3){
    return(defDate);
    }
    for (i=0;i<3;i++){
    if (parseInt(aryDate[i],10)<1){
    aryDate[i] = "1";
    }
    }
    find_tag="000";
    for (i=2;i>=0;i--){
    if (aryDate[i].length==3){
    if (aryDate[i]>="001" && aryDate[i]<="012"){
    tmpMonth = parseInt(aryDate[i],10)-1;
    switch (i){
    case 0:
    find_tag = "100";
    one_at = parseInt(aryDate[1],10);
    two_at = parseInt(aryDate[2],10);
    break;
    case 1:
    find_tag = "010";
    one_at = parseInt(aryDate[0],10);
    two_at = parseInt(aryDate[2],10);
    break;
    case 2:
    find_tag = "001";
    one_at = parseInt(aryDate[0],10);
    two_at = parseInt(aryDate[1],10);
    break;
    }
    }
    }
    }
    if (find_tag!="000"){
    one_days = this.GetMonthDays(two_at,tmpMonth);
    two_days = this.GetMonthDays(one_at,tmpMonth);
    if ((one_at>one_days)&&(two_at>two_days)){
    return(defDate);
    }
    if ((one_at<=one_days)&&(two_at>two_days)){
    tmpYear = this.GetFormatYear(two_at);
    tmpDay = one_at;
    }
    if ((one_at>one_days)&&(two_at<=two_days)){
    tmpYear = this.GetFormatYear(one_at);
    tmpDay = two_at;
    }
    if ((one_at<=one_days)&&(two_at<=two_days)){
    tmpYear = this.GetFormatYear(one_at);
    tmpDay = two_at;
    tmpDate = this.DateFormat;
    year_at = tmpDate.indexOf("<yyyy>");
    if (year_at == -1){
    year_at = tmpDate.indexOf("<yy>");
    }
    day_at = tmpDate.indexOf("<dd>");
    if (day_at == -1){
    day_at = tmpDate.indexOf("<d>");
    }
    if (year_at >= day_at){
    tmpYear = this.GetFormatYear(two_at);
    tmpDay = one_at;
    }
    }
    return(new Date(tmpYear, tmpMonth, tmpDay));
    }
    find_tag = "000";
    for (i=2;i>=0;i--){
    if (parseInt(aryDate[i],10)>31){
    tmpYear = this.GetFormatYear(parseInt(aryDate[i],10));
    switch (i){
    case 0:
    find_tag = "100";
    one_at = parseInt(aryDate[1],10);
    two_at = parseInt(aryDate[2],10);
    break;
    case 1:
    find_tag = "010";
    one_at = parseInt(aryDate[0],10);
    two_at = parseInt(aryDate[2],10);
    break;
    case 2:
    find_tag = "001";
    one_at = parseInt(aryDate[0],10);
    two_at = parseInt(aryDate[1],10);
    break;
    }
    }
    }
    if (find_tag=="000"){
    tmpDate = this.DateFormat;
    year_at = tmpDate.indexOf("<yyyy>");
    if (year_at == -1){
    year_at = tmpDate.indexOf("<yy>");
    }
    month_at = tmpDate.indexOf("<MMMMMM>");
    if (month_at == -1){
    month_at = tmpDate.indexOf("<MMM>");
    }
    if (month_at == -1){
    month_at = tmpDate.indexOf("<mm>");
    }
    if (month_at == -1){
    month_at = tmpDate.indexOf("<m>");
    }
    day_at = tmpDate.indexOf("<dd>");
    if (day_at == -1){
    day_at = tmpDate.indexOf("<d>");
    }
    if ((year_at>month_at)&&(year_at>day_at)){
    find_tag="001"
    }
    if ((year_at>month_at)&&(year_at<=day_at)){
    find_tag="010";
    }
    if ((year_at<=month_at)&&(year_at>day_at)){
    find_tag="010";
    }
    if ((year_at<=month_at)&&(year_at<=day_at)){
    find_tag="100";
    }
    switch (find_tag){
    case "100":
    tmpYear = parseInt(aryDate[0],10);
    one_at = parseInt(aryDate[1],10);
    two_at = parseInt(aryDate[2],10);
    break;
    case "010":
    one_at = parseInt(aryDate[0],10);
    tmpYear = parseInt(aryDate[1],10);
    two_at = parseInt(aryDate[2],10);
    break;
    case "001":
    one_at = parseInt(aryDate[0],10);
    two_at = parseInt(aryDate[1],10);
    tmpYear = parseInt(aryDate[2],10);
    break;
    }
    tmpYear = this.GetFormatYear(tmpYear);
    }
    if (find_tag!="000"){
    if ((one_at>12)&&(two_at>12)){
    return(defDate);
    }
    if (one_at<=12){
    if (two_at > this.GetMonthDays(tmpYear,one_at-1)){ return(new Date(tmpYear, one_at-1, this.GetMonthDays(tmpYear,one_at-1)));
    }
    if (two_at>12){
    return(new Date(tmpYear, one_at-1, two_at));
    }
    }
    if (two_at<=12){
    if (one_at > this.GetMonthDays(tmpYear,two_at-1)){
    return(new Date(tmpYear, two_at-1, this.GetMonthDays(tmpYear,two_at-1)));
    }
    if (one_at>12){
    return(new Date(tmpYear, two_at-1, one_at));
    }
    }
    if ((one_at<=12)&&(two_at<=12)){
    tmpMonth = one_at-1;
    tmpDay = two_at;
    tmpDate = this.DateFormat;
    month_at = tmpDate.indexOf("<MMMMMM>");
    if (month_at == -1){
    month_at = tmpDate.indexOf("<MMM>");
    }
    if (month_at == -1){
    month_at = tmpDate.indexOf("<mm>");
    }
    if (month_at == -1){
    month_at = tmpDate.indexOf("<m>");
    }
    day_at = tmpDate.indexOf("<dd>");
    if (day_at == -1){
    day_at = tmpDate.indexOf("<d>");
    }
    if (month_at >= day_at){
    tmpMonth = two_at-1;
    tmpDay = one_at;
    }
    return(new Date(tmpYear, tmpMonth, tmpDay));
    }
    }
    }
    this.CreateYearList = function(MinYear, MaxYear){ //create year list
    var theName = this.Name;
    var theYearObject = document.all.item(theName + "_YearList");
    if (theYearObject == null){
    return;
    }
    var theYear = 0;
    var theYearHTML = "<select id=\"" + theName + "_YearList\" style=\"" + this.YearListStyle + "\" tabIndex=\"-1\" onChange=\"document.jsMonthView.UpdateMonthGrid(this)\" onBlur=\"document.jsMonthView.DeleteMonthGrid()\">";
    for (theYear = MinYear; theYear <= MaxYear; theYear++){
    theYearHTML += "<option value=\"" + theYear.toString() + "\">" + theYear.toString() + "</option>";
    }
    theYearHTML += "</select>";
    theYearObject.outerHTML = theYearHTML;
    }
    this.CreateMonthList = function( ){ //create month list
    var theName = this.Name; var theMonthObject = document.all.item(theName + "_MonthList");
    if (theMonthObject == null){
    return;
    }
    var theMonth = 0;
    var theMonthHTML = "<select id=\"" + theName + "_MonthList\" style=\"" + this.MonthListStyle + "\" tabIndex=\"-1\" onChange=\"document.jsMonthView.UpdateMonthGrid(this)\" onBlur=\"document.jsMonthView.DeleteMonthGrid()\">";
    for (theMonth = 0; theMonth < 12; theMonth++){
    theMonthHTML += "<option value=\"" + theMonth.toString() + "\">" + this.MonthName[theMonth] + "</option>";
    }
    theMonthHTML +="</select>";
    theMonthObject.outerHTML = theMonthHTML;
    }
    this.setDayList = function(theYear, theMonth, theDay){ //set the month view show a date
    var theName = this.Name;
    var theDayObject = document.all.item(theName + "_DayList");
    if (theDayObject == null){
    return;
    }
    theDayObject.value = theDay.toString();
    var theFirstDay = new Date(theYear, theMonth, 1);
    var theCurrentDate = new Date();
    var theWeek = theFirstDay.getDay();
    if (theWeek == 0){
    theWeek = 7;
    }
    var theLeftDay = 0;
    if (theMonth == 0){
    theLeftDay = 31;
    }else{
    theLeftDay = this.GetMonthDays(theYear, theMonth - 1);
    }
    var theRightDay = this.GetMonthDays(theYear, theMonth);
    var theCurrentDay = theLeftDay - theWeek + 1;
    var offsetMonth = -1; //the month is previous month
    var theColor = this.InvalidColor;
    var theBgColor = this.UnselectBgColor;
    var theBdColor = theBgColor;
    var WeekId = 0
    var DayId = 0;
    var theStyle = "";
    var theDayHTML = "<table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    theDayHTML += " <tr style=\"" + this.TitleStyle + "\">";
    for (DayId = 0; DayId < 7; DayId++){
    theDayHTML += " <td width=\"10%\">" + this.WeekName[DayId] + "</td>";
    }
    theDayHTML += " </tr>";
    theDayHTML += " <tr>";
    theDayHTML += " <td colspan=\"7\" style=\"" + this.LineBgStyle + "\">";
    theDayHTML += " <table style=\"" + this.LineStyle + "\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    theDayHTML += " <tr><td></td></tr>";
    theDayHTML += " </table>";
    theDayHTML += " </td>";
    theDayHTML += " </tr>";
    for (WeekId = 0; WeekId < 6; WeekId++){
    theDayHTML += " <tr style=\"" + this.DayStyle + "\">";
    for (DayId = 0; DayId < 7; DayId++){
    if ((theCurrentDay > theLeftDay) && (WeekId < 3)){
    offsetMonth++; //the month is current month;
    theCurrentDay = 1;
    }
    if ((theCurrentDay > theRightDay) && (WeekId > 3)){
    offsetMonth++; //the month is next month;
    theCurrentDay = 1;
    }
    switch (offsetMonth){
    case -1:
    theColor = this.InvalidColor;
    break;
    case 1:
    theColor = this.InvalidColor;
    break;
    case 0:
    if ((DayId==0)||(DayId==6)){
    theColor = this.WeekendColor;
    }else{
    theColor = this.ValidColor;
    }
    break;
    }
    if ((DayId==0)||(DayId==6)){
    theBgColor = this.WeekendBgColor;
    }else{
    theBgColor = this.UnselectBgColor;
    }
    theBdColor = this.DayBdColor;
    if ((theCurrentDay == theDay) && (offsetMonth == 0)){
    theColor = this.SelectedColor;
    theBgColor = this.SelectedBgColor;
    theBdColor = theBgColor;
    }
    if ((theYear == theCurrentDate.getFullYear()) && (theMonth == theCurrentDate.getMonth()) && (theCurrentDay == theCurrentDate.getDate()) && (offsetMonth == 0)){
    theBdColor = this.TodayBdColor;
    }
    theStyle = "border:" + this.DayBdWidth + "px solid " + theBdColor + "; color:" + theColor + "; background-color:" + theBgColor + ";";
    theDayHTML += " <td style=\"" + theStyle + "\" onMouseOver=\"" + this.OverDayStyle + "\" onMouseOut=\"" + this.OutDayStyle + "\" onMouseDown=\"document.jsMonthView.CreateMonthGrid(" + theYear.toString() + ", " + (theMonth + offsetMonth).toString() + ", " + theCurrentDay.toString() + ")\">";
    theDayHTML += theCurrentDay.toString();
    theDayHTML += " </td>";
    theCurrentDay++;
    }
    theDayHTML += " </tr>";
    }
    theDayHTML += " <tr style=\"" + this.FooterStyle + "\" onMouseDown=\"document.jsMonthView.CreateMonthGrid(" + theCurrentDate.getFullYear().toString() + ", " + theCurrentDate.getMonth().toString() + ", " + theCurrentDate.getDate().toString() + ");\">";
    theStyle = "border:" + this.DayBdWidth + "px solid " + this.TodayBdColor + ";";
    theDayHTML += " <td style=\"" + theStyle + "\"><br></td>";
    theDayHTML += " <td colspan=\"6\"> " + this.TodayTitle + " " + this.SetDateFormat(theCurrentDate.getFullYear(), theCurrentDate.getMonth(), theCurrentDate.getDate()) + "</td>";
    theDayHTML += " </tr>";
    theDayHTML += " </table>";
    var theMonthGrid = document.all.item(theName + "_MonthGrid");
    theMonthGrid.innerHTML = theDayHTML;
    }
    this.CreateMonthGrid = function(theYear, theMonth, theDay){ //refresh the month view to the date, main action is run this.setDayList() and set this.Source.value
    var theTextObject = this.Source;
    if (theTextObject == null){
    return;
    }
    var theName = this.Name;
    var theYearObject = document.all.item(theName + "_YearList");
    var theMonthObject = document.all.item(theName + "_MonthList");
    var tmpYear = theYear;
    var tmpMonth = theMonth;
    var tmpDay = 1;
    if (tmpMonth < 0){
    tmpYear--;
    tmpMonth = 11;
    }
    if (tmpMonth > 11){
    tmpYear++;
    tmpMonth = 0;
    }
    if (tmpYear < this.MinYear){
    tmpYear = this.MinYear;
    }
    if (tmpYear > this.MaxYear){
    tmpYear = this.MaxYear;
    }
    if (theDay < 1){
    tmpDay = 1;
    }else{
    tmpDay = this.GetMonthDays(tmpYear, tmpMonth);
    if (theDay < tmpDay){
    tmpDay = theDay;
    }
    }
    theYearObject.value = tmpYear;
    theMonthObject.value = tmpMonth;
    this.setDayList(tmpYear, tmpMonth, tmpDay);
    theTextObject.value = this.SetDateFormat(tmpYear, tmpMonth, tmpDay);
    theTextObject.select();
    }
    this.UpdateMonthGrid = function(theObject){ //run this.CreateMonthGrid() by theObject
    var theTextObject = this.Source;
    if (theTextObject == null){
    return;
    }
    var theName = this.Name;
    var theYearObject = document.all.item(theName + "_YearList");
    var theMonthObject = document.all.item(theName + "_MonthList");
    var theDayObject = document.all.item(theName + "_DayList");
    var tmpName = theObject.id.substr(theObject.id.lastIndexOf("_"));
    switch (tmpName){
    case "_goPreviousMonth": //go previous month button
    theObject.disabled = true;
    this.CreateMonthGrid(parseInt(theYearObject.value, 10), parseInt(theMonthObject.value, 10) - 1, parseInt(theDayObject.value, 10));
    theObject.disabled = false;
    break;
    case "_goNextMonth": //go next month button
    theObject.disabled = true;
    this.CreateMonthGrid(parseInt(theYearObject.value, 10), parseInt(theMonthObject.value, 10) + 1, parseInt(theDayObject.value, 10));
    theObject.disabled = false;
    break;
    case "_YearList": //year list
    this.CreateMonthGrid(parseInt(theYearObject.value, 10), parseInt(theMonthObject.value, 10), parseInt(theDayObject.value, 10));
    break;
    case "_MonthList": //month list
    this.CreateMonthGrid(parseInt(theYearObject.value, 10), parseInt(theMonthObject.value, 10), parseInt(theDayObject.value, 10));
    break;
    default:
    return;
    }
    }
    this.DeleteMonthGrid = function( ){ //check document focus, if blur this.Source then delete this
    var theName = this.Name;
    var theDivObject = document.all.item(theName + "_MonthView");
    if (theDivObject == null){
    return;
    }
    var tmpObject = document.activeElement;
    while (tmpObject != null){
    if (tmpObject == this.Source){
    return;
    }
    //if (tmpObject.id == theName + "_MonthView"){
    // return;
    //}
    //if (tmpObject.id == theName + "_MonthGrid"){
    // return;
    //}
    if (tmpObject.id == theName + "_goPreviousMonth"){
    return;
    }
    if (tmpObject.id == theName + "_goNextMonth"){
    return;
    }
    if (tmpObject.id == theName + "_YearList"){
    return;
    }
    if (tmpObject.id == theName + "_MonthList"){
    return;
    }
    if (tmpObject.id == theName + "_DayList"){
    return;
    }
    tmpObject = tmpObject.parentElement;
    }
    if (tmpObject == null){ //delete the month view
    theDivObject.outerHTML = "";
    var theDate = new Date(this.GetTextDate(this.Source.value));
    if (isNaN(theDate)){
    this.Source.value = "";
    }else{
    this.Source.value = this.SetDateFormat(theDate.getFullYear(), theDate.getMonth(), theDate.getDate());
    }
    this.Source = null;
    }
    }
    this.InitialMonthView = function( ){
    var theName = this.Name;
    var theValue = this.Source.value;
    var theCurrentDate = new Date(this.GetTextDate(theValue));
    if (isNaN(theCurrentDate)){
    theCurrentDate = new Date();
    }
    var theDivHTML = "<div id=\"" + theName + "_MonthView\" onBlur=\"document.jsMonthView.DeleteMonthGrid();\">";
    theDivHTML += " <table width=\"" + this.Width.toString() + "\" height=\"" + this.Height.toString() + "\" style=\"" + this.MonthGridStyle + "\" cellpadding=\"0\" cellspacing=\"0\">";
    theDivHTML += " <tr>";
    theDivHTML += " <td align=\"center\" valign=\"top\">";
    theDivHTML += " <table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    theDivHTML += " <tr align=\"center\" style=\"" + this.HeaderStyle + "\">";
    theDivHTML += " <td>";
    theDivHTML += " <input type=\"button\" tabIndex=\"-1\" style=\"" + this.MonthBtStyle + "\" id=\"" + theName + "_goPreviousMonth\" value=\"" + this.PreviousMonthText + "\" onClick=\"document.jsMonthView.UpdateMonthGrid(this)\" onBlur=\"document.jsMonthView.DeleteMonthGrid()\">";
    theDivHTML += " </td>";
    theDivHTML += " <td>";
    theDivHTML += " <select id=\"" + theName + "_YearList\">";
    theDivHTML += " </select>";
    theDivHTML += " </td>";
    theDivHTML += " <td>";
    theDivHTML += " <select id=\"" + theName + "_MonthList\">";
    theDivHTML += " </select>";
    theDivHTML += " <input type=\"hidden\" id=\"" + theName + "_DayList\" value=\"1\">";
    theDivHTML += " </td>";
    theDivHTML += " <td>";
    theDivHTML += " <input type=\"button\" tabIndex=\"-1\" style=\"" + this.MonthBtStyle + "\" id=\"" + theName + "_goNextMonth\" value=\"" + this.NextMonthText + "\" onClick=\"document.jsMonthView.UpdateMonthGrid(this)\" onBlur=\"document.jsMonthView.DeleteMonthGrid()\">";
    theDivHTML += " </td>";
    theDivHTML += " </tr>";
    theDivHTML += " <tr>";
    theDivHTML += " <td colspan=\"4\" bgcolor=\"" + this.UnselectBgColor + "\">";
    theDivHTML += " <div id=\"" + theName + "_MonthGrid\"><br></div>";
    theDivHTML += " </td>";
    theDivHTML += " </tr>";
    theDivHTML += " </table>";
    theDivHTML += " </td>";
    theDivHTML += " </tr>";
    theDivHTML += " </table>";
    theDivHTML += " </div>";
    document.body.insertAdjacentHTML("beforeEnd", theDivHTML);
    theDivObject = document.all.item(theName + "_MonthView");
    theDivObject.style.position = "absolute";
    theDivObject.style.posLeft = this.GetoffsetLeft(this.Source);
    theDivObject.style.posTop = this.GetoffsetTop(this.Source) + this.Source.offsetHeight;
    this.CreateYearList(this.MinYear, this.MaxYear);
    this.CreateMonthList();
    this.CreateMonthGrid(theCurrentDate.getFullYear(), theCurrentDate.getMonth(), theCurrentDate.getDate());
    }
    }
    function CreateMonthView(theTextObject){ //the month view create interface, fire at element@#s onFocus event
    //if (theTextObject.readOnly == true){
    //return;
    //}
    if (document.jsMonthView != null){
    if (document.jsMonthView.Source == theTextObject){
    return;
    }else{
    document.jsMonthView.DeleteMonthGrid();
    }
    }
    document.jsMonthView = new DefineMonthView(theTextObject);
    //insert your code, change the month view propertiy
    //example:
    // document.jsMonthView.DateFormat = "<MMM> <d>,<yyyy>";
    document.jsMonthView.InitialMonthView();
    theTextObject.select();
    }
    function DeleteMonthView(theTextObject){ //the month view delete interface, fire at element@#s onBlur event
    if (document.jsMonthView == null){
    return;
    }
    document.jsMonthView.DeleteMonthGrid();
    if (document.jsMonthView.Source == null){
    document.jsMonthView = null;
    }
    }
    //-->
    </SCRIPT>

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>