Javascript 日期 时间 选择控件

本文源出处: http://wf5360308.cnblogs.com/articles/362935.html
对显示风格进行了一些修改.

  1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /**
  2InBlock.gif *本日历选择控件由tiannet根据前人经验完善而得。大部分代码来自meizz的日历控件。
  3InBlock.gif *tiannet添加了时间选择功能、select,object标签隐藏功能,还有其它小功能。
  4InBlock.gif *使用方法:
  5InBlock.gif * (1)只选择日期   <input type="text" name="date"   readOnly onClick="setDay(this);">
  6InBlock.gif * (2)选择日期和小时  <input type="text" name="dateh"  readOnly onClick="setDayH(this);">
  7InBlock.gif * (3)选择日期和小时及分钟 <input type="text" name="datehm" readOnly onClick="setDayHM(this);">
  8InBlock.gif *设置参数的方法
  9InBlock.gif * (1)设置日期分隔符    setDateSplit(strSplit);默认为"-"
 10InBlock.gif * (2)设置日期与时间之间的分隔符  setDateTimeSplit(strSplit);默认为" "
 11InBlock.gif * (3)设置时间分隔符    setTimeSplit(strSplit);默认为":"
 12InBlock.gif * (4)设置(1),(2),(3)中的分隔符  setSplit(strDateSplit,strDateTimeSplit,strTimeSplit);
 13InBlock.gif * (5)设置开始和结束年份    setYearPeriod(intDateBeg,intDateEnd)
 14InBlock.gif *说明:
 15InBlock.gif * 默认返回的日期时间格式如同:2005-02-02 08:08
 16ExpandedBlockEnd.gif */

 17 None.gif // ------------------ 样式定义 ---------------------------//
 18 None.gif// 功能按钮同样样式
 19 None.gif var  s_tiannet_turn_base  =   " height:16px;font-size:9pt;color:white;border:0 solid #CCCCCC;cursor:hand;background-color:#2650A6; " ;
 20 None.gif // 翻年、月等的按钮
 21 None.gif var  s_tiannet_turn  =  s_tiannet_turn_base; // 原来的是: "width:28px;" + s_tiannet_turn_base;
 22 None.gif// 关闭、清空等按钮样式
 23 None.gif var  s_tiannet_turn2  =   " width:22px; "   +  s_tiannet_turn_base;
 24 None.gif // 年选择下拉框
 25 None.gif var  s_tiannet_select  =   " width:64px;display:none; " ;
 26 None.gif // 月、时、分选择下拉框
 27 None.gif var  s_tiannet_select2  =   " width:46px;display:none; " ;
 28 None.gif // 日期选择控件体的样式
 29 None.gif var  s_tiannet_body  =   " width:150;background-color:#2650A6;display:none;z-index:9998;position:absolute; "   +
 30 None.gif   " border-left:1 solid #CCCCCC;border-top:1 solid #CCCCCC;border-right:1 solid #999999;border-bottom:1 solid #999999; " ;
 31 None.gif // 显示日的td的样式
 32 None.gif var  s_tiannet_day  =   " width:21px;height:20px;background-color:#D8F0FC;font-size:10pt; " ;
 33 None.gif // 字体样式
 34 None.gif var  s_tiannet_font  =   " color:#FFCC00;font-size:9pt;cursor:hand; " ;
 35 None.gif // 链接的样式
 36 None.gif var  s_tiannet_link  =   " text-decoration:none;font-size:9pt;color:#2650A6; " ;
 37 None.gif // 横线
 38 None.gif var  s_tiannet_line  =   " border-bottom:1 solid #6699CC " ;
 39 None.gif // ------------------ 变量定义 ---------------------------//
 40 None.gif var  tiannetYearSt  =   1950 ; // 可选择的开始年份
 41 None.gif var  tiannetYearEnd  =   2010 ; // 可选择的结束年份
 42 None.gif var  tiannetDateNow  =   new  Date();
 43 None.gif var  tiannetYear  =  tiannetDateNow.getFullYear();  // 定义年的变量的初始值
 44 None.gif var  tiannetMonth  =  tiannetDateNow.getMonth() + 1 // 定义月的变量的初始值
 45 None.gif var  tiannetDay  =  tiannetDateNow.getDate();
 46 None.gif var  tiannetHour  =   8 ; // tiannetDateNow.getHours();
 47 None.gif var  tiannetMinute  =   0 ; // tiannetDateNow.getMinutes();
 48 None.gif var  tiannetArrDay = new  Array( 42 );           // 定义写日期的数组
 49 None.gif var  tiannetDateSplit  =   " - " ;      // 日期的分隔符号
 50 None.gif var  tiannetDateTimeSplit  =   "   " ;     // 日期与时间之间的分隔符
 51 None.gif var  tiannetTimeSplit  =   " : " ;      // 时间的分隔符号
 52 None.gif var  tiannetOutObject;       // 接收日期时间的对象
 53 None.gif var  arrTiannetHide  =   new  Array(); // 被强制隐藏的标签
 54 None.gif var  m_bolShowHour  =   false ; // 是否显示小时
 55 None.gif var  m_bolShowMinute  =   false ; // 是否显示分钟
 56 None.gif
 57 None.gif var  m_aMonHead  =   new  Array( 12 );          // 定义阳历中每个月的最大天数
 58 None.gif     m_aMonHead[ 0 =   31 ; m_aMonHead[ 1 =   28 ; m_aMonHead[ 2 =   31 ; m_aMonHead[ 3 =   30 ; m_aMonHead[ 4 ]   =   31 ; m_aMonHead[ 5 ]   =   30 ;
 59 None.gif    m_aMonHead[ 6 =   31 ; m_aMonHead[ 7 =   31 ; m_aMonHead[ 8 =   30 ; m_aMonHead[ 9 =   31 ; m_aMonHead[ 10 =   30 ; m_aMonHead[ 11 =   31 ;
 60 None.gif //  ---------------------- 用户可调用的函数 -----------------------------//
 61 None.gif// 用户主调函数-只选择日期
 62 ExpandedBlockStart.gifContractedBlock.gif function  setDay(obj) dot.gif {
 63InBlock.gif tiannetOutObject = obj;
 64InBlock.gif //如果标签中有值,则将日期初始化为当前值
 65InBlock.gif var strValue = tiannetTrim(tiannetOutObject.value);
 66ExpandedSubBlockStart.gifContractedSubBlock.gif if( strValue != "" )dot.gif{
 67InBlock.gif  tiannetInitDate(strValue);
 68ExpandedSubBlockEnd.gif }

 69InBlock.gif tiannetPopCalendar();
 70ExpandedBlockEnd.gif}

 71 None.gif // 用户主调函数-选择日期和小时
 72 ExpandedBlockStart.gifContractedBlock.gif function  setDayH(obj) dot.gif {
 73InBlock.gif tiannetOutObject = obj;
 74InBlock.gif m_bolShowHour = true;
 75InBlock.gif //如果标签中有值,则将日期和小时初始化为当前值
 76InBlock.gif var strValue = tiannetTrim(tiannetOutObject.value);
 77ExpandedSubBlockStart.gifContractedSubBlock.gif if( strValue != "" )dot.gif{
 78InBlock.gif  tiannetInitDate(strValue.substring(0,10));
 79InBlock.gif  var hour = strValue.substring(11,13);
 80InBlock.gif  if( hour < 10 ) tiannetHour = hour.substring(1,2);
 81ExpandedSubBlockEnd.gif }

 82InBlock.gif tiannetPopCalendar();
 83ExpandedBlockEnd.gif}

 84 None.gif // 用户主调函数-选择日期和小时及分钟
 85 ExpandedBlockStart.gifContractedBlock.gif function  setDayHM(obj) dot.gif {
 86InBlock.gif tiannetOutObject = obj;
 87InBlock.gif m_bolShowHour = true;
 88InBlock.gif m_bolShowMinute = true;
 89InBlock.gif //如果标签中有值,则将日期和小时及分钟初始化为当前值
 90InBlock.gif var strValue = tiannetTrim(tiannetOutObject.value);
 91ExpandedSubBlockStart.gifContractedSubBlock.gif if( strValue != "" )dot.gif{
 92InBlock.gif  tiannetInitDate(strValue.substring(0,10));
 93InBlock.gif  var time = strValue.substring(11,16);
 94InBlock.gif  var arr = time.split(tiannetTimeSplit);
 95InBlock.gif  tiannetHour = arr[0];
 96InBlock.gif  tiannetMinute = arr[1];
 97InBlock.gif  if( tiannetHour < 10 ) tiannetHour = tiannetHour.substring(1,2);
 98InBlock.gif  if( tiannetMinute < 10 ) tiannetMinute = tiannetMinute.substring(1,2);
 99ExpandedSubBlockEnd.gif }

100InBlock.gif tiannetPopCalendar();
101ExpandedBlockEnd.gif}

102 None.gif // 设置开始日期和结束日期
103 ExpandedBlockStart.gifContractedBlock.gif function   setYearPeriod(intDateBeg,intDateEnd) dot.gif {
104InBlock.gif tiannetYearSt = intDateBeg;
105InBlock.gif tiannetYearEnd = intDateEnd;
106ExpandedBlockEnd.gif}

107 None.gif // 设置日期分隔符。默认为"-"
108 ExpandedBlockStart.gifContractedBlock.gif function  setDateSplit(strDateSplit) dot.gif {
109InBlock.gif tiannetDateSplit = strDateSplit;
110ExpandedBlockEnd.gif}

111 None.gif // 设置日期与时间之间的分隔符。默认为" "
112 ExpandedBlockStart.gifContractedBlock.gif function  setDateTimeSplit(strDateTimeSplit) dot.gif {
113InBlock.gif tiannetDateTimeSplit = strDateTimeSplit;
114ExpandedBlockEnd.gif}

115 None.gif // 设置时间分隔符。默认为":"
116 ExpandedBlockStart.gifContractedBlock.gif function  setTimeSplit(strTimeSplit) dot.gif {
117InBlock.gif tiannetTimeSplit = strTimeSplit;
118ExpandedBlockEnd.gif}

119 None.gif // 设置分隔符
120 ExpandedBlockStart.gifContractedBlock.gif function  setSplit(strDateSplit,strDateTimeSplit,strTimeSplit) dot.gif {
121InBlock.gif tiannetDateSplit(strDateSplit);
122InBlock.gif tiannetDateTimeSplit(strDateTimeSplit);
123InBlock.gif tiannetTimeSplit(strTimeSplit);
124ExpandedBlockEnd.gif}

125 None.gif // 设置默认的日期。格式为:YYYY-MM-DD
126 ExpandedBlockStart.gifContractedBlock.gif function  setDefaultDate(strDate) dot.gif {
127InBlock.gif tiannetYear = strDate.substring(0,4);
128InBlock.gif tiannetMonth = strDate.substring(5,7);
129InBlock.gif tiannetDay = strDate.substring(8,10);
130ExpandedBlockEnd.gif}

131 None.gif // 设置默认的时间。格式为:HH24:MI
132 ExpandedBlockStart.gifContractedBlock.gif function  setDefaultTime(strTime) dot.gif {
133InBlock.gif tiannetHour = strTime.substring(0,2);
134InBlock.gif tiannetMinute = strTime.substring(3,5);
135ExpandedBlockEnd.gif}

136 None.gif //  ---------------------- end 用户可调用的函数 -----------------------------//
137 None.gif// ------------------ begin 页面显示部分 ---------------------------//
138 None.gif var  weekName  =   new  Array( " " , " " , " " , " " , " " , " " , " " );
139 None.gifdocument.write(' < div id = " divTiannetDate "  style = " '+s_tiannet_body+' "  style = " 本日历选择控件由tiannet根据前人经验完善而成! " > ');
140 None.gifdocument.write(' < div align = " center "  id = " divTiannetDateText "  Author = " tiannet "  style = " padding-top:2px; " > ');
141 None.gifdocument.write(' < span id = " tiannetYearHead "  Author = " tiannet "  style = " '+s_tiannet_font+' "  ' +
142 None.gif    'onclick = " spanYearCEvent(); " >& nbsp;年 </ span > ');
143 None.gifdocument.write(' < select id = " selTianYear "  style = " '+s_tiannet_select+' "  Author = " tiannet "   ' +
144 None.gif    ' onChange = " tiannetYear=this.value;tiannetSetDay(tiannetYear,tiannetMonth);document.all.tiannetYearHead.style.display=\'\';'+
145 None.gif    'this.style.display=\'none\'; " > ');
146 ExpandedBlockStart.gifContractedBlock.gif for ( var  i = tiannetYearSt;i  <=  tiannetYearEnd;i  ++ ) dot.gif {
147InBlock.gif document.writeln('<option value="' + i + '">+ i + '年</option>');
148ExpandedBlockEnd.gif}

149 None.gifdocument.write(' </ select > ');
150 None.gifdocument.write(' < span id = " tiannetMonthHead "  Author = " tiannet "  style = " '+s_tiannet_font+' "  ' +
151 None.gif    'onclick = " spanMonthCEvent(); " >& nbsp; & nbsp;月 </ span > ');
152 None.gifdocument.write(' < select id = " selTianMonth "  style = " '+s_tiannet_select2+' "  Author = " tiannet "  ' +
153 None.gif    'onChange = " tiannetMonth=this.value;tiannetSetDay(tiannetYear,tiannetMonth);document.all.tiannetMonthHead.style.display=\'\';'+
154 None.gif    'this.style.display=\'none\'; " > ');
155 ExpandedBlockStart.gifContractedBlock.gif for ( var  i = 1 ;i  <=   12 ;i  ++ ) dot.gif {
156InBlock.gif document.writeln('<option value="' + i + '">+ i + '月</option>');
157ExpandedBlockEnd.gif}

158 None.gifdocument.write(' </ select > ');
159 None.gif // document.write('</div>');
160 None.gif// document.write('<div align="center" id="divTiannetTimeText" Author="tiannet">');
161 None.gif document.write(' < span id = " tiannetHourHead "  Author = " tiannet "  style = " '+s_tiannet_font+'display:none; "  ' +
162 None.gif    'onclick = " spanHourCEvent(); " >& nbsp;时 </ span > ');
163 None.gifdocument.write(' < select id = " selTianHour "  style = " '+s_tiannet_select2+'display:none; "  Author = " tiannet "  ' +
164 None.gif    ' onChange = " tiannetHour=this.value;tiannetWriteHead();document.all.tiannetHourHead.style.display=\'\';' +
165 None.gif    'this.style.display=\'none\'; " > ');
166 ExpandedBlockStart.gifContractedBlock.gif for ( var  i = 0 ;i  <=   23 ;i  ++ ) dot.gif {
167InBlock.gif document.writeln('<option value="' + i + '">+ i + '时</option>');
168ExpandedBlockEnd.gif}

169 None.gifdocument.write(' </ select > ');
170 None.gifdocument.write(' < span id = " tiannetMinuteHead "  Author = " tiannet "  style = " '+s_tiannet_font+'display:none; "  ' +
171 None.gif    'onclick = " spanMinuteCEvent(); " >& nbsp; & nbsp;分 </ span > ');
172 None.gifdocument.write(' < select id = " selTianMinute "  style = " '+s_tiannet_select2+'display:none; "  Author = " tiannet "  ' +
173 None.gif    '  onChange = " tiannetMinute=this.value;tiannetWriteHead();document.all.tiannetMinuteHead.style.display=\'\';'+
174 None.gif    'this.style.display=\'none\'; " > ');
175 ExpandedBlockStart.gifContractedBlock.gif for ( var  i = 0 ;i  <=   59 ;i  ++ ) dot.gif {
176InBlock.gif document.writeln('<option value="' + i + '">+ i + '分</option>');
177ExpandedBlockEnd.gif}

178 None.gifdocument.write(' </ select > ');
179 None.gifdocument.write(' </ div > ');
180 None.gif // 输出一条横线
181 None.gif document.write(' < div style = " '+s_tiannet_line+' " ></ div > ');
182 None.gifdocument.write(' < div align = " center "  id = " divTiannetTurn "  style = " border:0; "  Author = " tiannet " > ');
183 None.gifdocument.write(' < input type = " button "  style = " '+s_tiannet_turn+' "  value = " "  title = " 上一年 "  onClick = " tiannetPrevYear(); " > '); // ◄►▲▼
184 None.gif document.write(' < font style = " '+s_tiannet_turn+' " > </ font > ');
185 None.gifdocument.write(' < input type = " button "  style = " '+s_tiannet_turn+' "  value = " "  title = " 下一年 "  onClick = " tiannetNextYear(); " >& nbsp; & nbsp;');
186 None.gifdocument.write(' < input type = " button "  style = " '+s_tiannet_turn+' "  value = " "  title = " 上一月 "  onClick = " tiannetPrevMonth(); " > ');
187 None.gifdocument.write(' < font style = " '+s_tiannet_turn+' " > </ font > ');
188 None.gifdocument.write(' < input type = " button "  style = " '+s_tiannet_turn+' "  value = " "  title = " 下一月 "  onClick = " tiannetNextMonth(); " > ');
189 None.gif
190 None.gifdocument.write(' </ div > ');
191 None.gif // 输出一条横线
192 None.gif document.write(' < div style = " '+s_tiannet_line+' " ></ div > ');
193 None.gifdocument.write(' < table border = 0  cellspacing = 0  cellpadding = 0   bgcolor = white onselectstart = " return false " > ');
194 None.gifdocument.write('  < tr style = " background-color:#2650A6;font-size:10pt;color:white;height:22px; "  Author = " tiannet " > ');
195 ExpandedBlockStart.gifContractedBlock.gif for ( var  i  = 0 ;i  <  weekName.length;i  ++ ) dot.gif {
196InBlock.gif //输出星期
197InBlock.gif document.write('<td width="21" align="center" Author="tiannet">+ weekName[i] + '</td>');
198ExpandedBlockEnd.gif}

199 None.gifdocument.write('  </ tr > ');
200 None.gifdocument.write(' </ table > ');
201 None.gif // 输出天的选择
202 None.gif document.write(' < table border = 0  cellspacing = 1  cellpadding = 0   bgcolor = white onselectstart = " return false " > ');
203 None.gif var  n  =   0 ;
204 ExpandedBlockStart.gifContractedBlock.gif for  ( var  i = 0 ;i < 5 ;i ++ dot.gif
205InBlock.gif document.write (' <tr align=center id="trTiannetDay' + i + '" >');
206ExpandedSubBlockStart.gifContractedSubBlock.gif for (var j=0;j<7;j++)dot.gif{
207InBlock.gif  document.write('<td align="center" id="tdTiannetDay' + n + '" '+
208InBlock.gif    'onClick="tiannetDay=this.innerText;tiannetSetValue(true);" ' 
209InBlock.gif   +' style="' + s_tiannet_day + '">&nbsp;</td>');
210InBlock.gif  n ++;
211ExpandedSubBlockEnd.gif }

212InBlock.gif document.write (' </tr>');
213ExpandedBlockEnd.gif}

214 None.gifdocument.write ('  < tr align = center id = " trTiannetDay5 "   > ');
215 None.gifdocument.write(' < td align = " center "  id = " tdTiannetDay35 "  onClick = " tiannetDay=this.innerText;tiannetSetValue(true); "  ' 
216 None.gif     + ' style = " ' + s_tiannet_day + ' " >& nbsp; </ td > ');
217 None.gifdocument.write(' < td align = " center "  id = " tdTiannetDay36 "  onClick = " tiannetDay=this.innerText;tiannetSetValue(true); "  ' 
218 None.gif     + ' style = " ' + s_tiannet_day + ' " >& nbsp; </ td > ');
219 None.gifdocument.write(' < td align = " right "  colspan = " 5 " >< a href = " javascript:tiannetClear(); "  style = " ' + s_tiannet_link + ' " > 清空 </ a > ' +
220 None.gif    ' & nbsp; < a href = " javascript:tiannetHideControl(); "  style = " ' + s_tiannet_link + ' " > 关闭 </ a > +
221 None.gif    ' & nbsp; < a href = " javascript:tiannetSetValue(true); "  style = " ' + s_tiannet_link + ' " > 确定 </ a >& nbsp;'  +
222 None.gif    ' </ td > ');
223 None.gifdocument.write ('  </ tr > ');
224 None.gifdocument.write(' </ table > ');
225 None.gifdocument.write(' </ div > ');
226 None.gif // ------------------ end 页面显示部分 ---------------------------//
227 None.gif// ------------------ 显示日期时间的span标签响应事件 ---------------------------//
228 None.gif// 单击年份span标签响应
229 ExpandedBlockStart.gifContractedBlock.gif function  spanYearCEvent() dot.gif {
230InBlock.gif hideElementsById(new Array("selTianYear","tiannetMonthHead"),false);
231InBlock.gif if(m_bolShowHour) hideElementsById(new Array("tiannetHourHead"),false);
232InBlock.gif if(m_bolShowMinute) hideElementsById(new Array("tiannetMinuteHead"),false);
233InBlock.gif hideElementsById(new Array("tiannetYearHead","selTianMonth","selTianHour","selTianMinute"),true);
234ExpandedBlockEnd.gif}

235 None.gif // 单击月份span标签响应
236 ExpandedBlockStart.gifContractedBlock.gif function  spanMonthCEvent() dot.gif {
237InBlock.gif hideElementsById(new Array("selTianMonth","tiannetYearHead"),false);
238InBlock.gif if(m_bolShowHour) hideElementsById(new Array("tiannetHourHead"),false);
239InBlock.gif if(m_bolShowMinute) hideElementsById(new Array("tiannetMinuteHead"),false);
240InBlock.gif hideElementsById(new Array("tiannetMonthHead","selTianYear","selTianHour","selTianMinute"),true);
241ExpandedBlockEnd.gif}

242 None.gif // 单击小时span标签响应
243 ExpandedBlockStart.gifContractedBlock.gif function  spanHourCEvent() dot.gif {
244InBlock.gif hideElementsById(new Array("tiannetYearHead","tiannetMonthHead"),false);
245InBlock.gif if(m_bolShowHour) hideElementsById(new Array("selTianHour"),false);
246InBlock.gif if(m_bolShowMinute) hideElementsById(new Array("tiannetMinuteHead"),false);
247InBlock.gif hideElementsById(new Array("tiannetHourHead","selTianYear","selTianMonth","selTianMinute"),true);
248ExpandedBlockEnd.gif}

249 None.gif // 单击分钟span标签响应
250 ExpandedBlockStart.gifContractedBlock.gif function  spanMinuteCEvent() dot.gif {
251InBlock.gif hideElementsById(new Array("tiannetYearHead","tiannetMonthHead"),false);
252InBlock.gif if(m_bolShowHour) hideElementsById(new Array("tiannetHourHead"),false);
253InBlock.gif if(m_bolShowMinute) hideElementsById(new Array("selTianMinute"),false);
254InBlock.gif hideElementsById(new Array("tiannetMinuteHead","selTianYear","selTianMonth","selTianHour"),true);
255ExpandedBlockEnd.gif}

256 None.gif // 根据标签id隐藏或显示标签
257 ExpandedBlockStart.gifContractedBlock.gif function  hideElementsById(arrId,bolHide) dot.gif {
258InBlock.gif var strDisplay = "";
259InBlock.gif if(bolHide) strDisplay = "none";
260ExpandedSubBlockStart.gifContractedSubBlock.gif for(var i = 0;i < arrId.length;i ++)dot.gif{
261InBlock.gif  var obj = document.getElementById(arrId[i]);
262InBlock.gif  obj.style.display = strDisplay;
263ExpandedSubBlockEnd.gif }

264ExpandedBlockEnd.gif}

265 None.gif // ------------------ end 显示日期时间的span标签响应事件 ---------------------------//
266 None.gif// 判断某年是否为闰年
267 ExpandedBlockStart.gifContractedBlock.gif function  isPinYear(year) dot.gif {
268InBlock.gif var bolRet = false;
269ExpandedSubBlockStart.gifContractedSubBlock.gif if (0==year%4&&((year%100!=0)||(year%400==0))) dot.gif{
270InBlock.gif  bolRet = true;
271ExpandedSubBlockEnd.gif }

272InBlock.gif return bolRet;
273ExpandedBlockEnd.gif}

274 None.gif // 得到一个月的天数,闰年为29天
275 ExpandedBlockStart.gifContractedBlock.gif function  getMonthCount(year,month) dot.gif {
276InBlock.gif var c=m_aMonHead[month-1];
277InBlock.gif if((month==2)&&isPinYear(year)) c++;
278InBlock.gif return c;
279ExpandedBlockEnd.gif}

280 None.gif // 重新设置当前的日。主要是防止在翻年、翻月时,当前日大于当月的最大日
281 ExpandedBlockStart.gifContractedBlock.gif function  setRealDayCount()  dot.gif {
282ExpandedSubBlockStart.gifContractedSubBlock.gif if( tiannetDay > getMonthCount(tiannetYear,tiannetMonth) ) dot.gif{
283InBlock.gif  //如果当前的日大于当月的最大日,则取当月最大日
284InBlock.gif  tiannetDay = getMonthCount(tiannetYear,tiannetMonth);
285ExpandedSubBlockEnd.gif }

286ExpandedBlockEnd.gif}

287 None.gif // 在个位数前加零
288 ExpandedBlockStart.gifContractedBlock.gif function  addZero(value) dot.gif {
289ExpandedSubBlockStart.gifContractedSubBlock.gif if(value < 10 )dot.gif{
290InBlock.gif  value = "0" + value;
291ExpandedSubBlockEnd.gif }

292InBlock.gif return value;
293ExpandedBlockEnd.gif}

294 None.gif // 取出空格
295 ExpandedBlockStart.gifContractedBlock.gif function  tiannetTrim(str)  dot.gif {
296InBlock.gif return str.replace(/(^\s*)|(\s*$)/g,"");
297ExpandedBlockEnd.gif}

298 None.gif // 为select创建一个option
299 ExpandedBlockStart.gifContractedBlock.gif function  createOption(objSelect,value,text) dot.gif {
300InBlock.gif var option = document.createElement("OPTION");
301InBlock.gif option.value = value;
302InBlock.gif option.text = text;
303InBlock.gif objSelect.options.add(option);
304ExpandedBlockEnd.gif}

305 None.gif // 往前翻 Year
306 ExpandedBlockStart.gifContractedBlock.gif function  tiannetPrevYear()  dot.gif {
307ExpandedSubBlockStart.gifContractedSubBlock.gif if(tiannetYear > 999 && tiannetYear <10000)dot.gif{tiannetYear--;}
308ExpandedSubBlockStart.gifContractedSubBlock.gif elsedot.gif{alert("年份超出范围(1000-9999)!");}
309InBlock.gif tiannetSetDay(tiannetYear,tiannetMonth);
310InBlock.gif //如果年份小于允许的最小年份,则创建对应的option
311ExpandedSubBlockStart.gifContractedSubBlock.gif if( tiannetYear < tiannetYearSt ) dot.gif{
312InBlock.gif  tiannetYearSt = tiannetYear;
313InBlock.gif  createOption(document.all.selTianYear,tiannetYear,tiannetYear + "");
314ExpandedSubBlockEnd.gif }

315InBlock.gif checkSelect(document.all.selTianYear,tiannetYear);
316InBlock.gif tiannetWriteHead();
317ExpandedBlockEnd.gif}

318 None.gif // 往后翻 Year
319 ExpandedBlockStart.gifContractedBlock.gif function  tiannetNextYear()  dot.gif {
320ExpandedSubBlockStart.gifContractedSubBlock.gif if(tiannetYear > 999 && tiannetYear <10000)dot.gif{tiannetYear++;}
321ExpandedSubBlockStart.gifContractedSubBlock.gif elsedot.gif{alert("年份超出范围(1000-9999)!");return;}
322InBlock.gif tiannetSetDay(tiannetYear,tiannetMonth);
323InBlock.gif //如果年份超过允许的最大年份,则创建对应的option
324ExpandedSubBlockStart.gifContractedSubBlock.gif if( tiannetYear > tiannetYearEnd ) dot.gif{
325InBlock.gif  tiannetYearEnd = tiannetYear;
326InBlock.gif  createOption(document.all.selTianYear,tiannetYear,tiannetYear + "");
327ExpandedSubBlockEnd.gif }

328InBlock.gif checkSelect(document.all.selTianYear,tiannetYear);
329InBlock.gif tiannetWriteHead();
330ExpandedBlockEnd.gif}

331 None.gif // 选择今天
332 ExpandedBlockStart.gifContractedBlock.gif function  tiannetToday()  dot.gif {
333InBlock.gif tiannetYear = tiannetDateNow.getFullYear();
334InBlock.gif tiannetMonth = tiannetDateNow.getMonth()+1;
335InBlock.gif tiannetDay = tiannetDateNow.getDate();
336InBlock.gif tiannetSetValue(true);
337InBlock.gif //tiannetSetDay(tiannetYear,tiannetMonth);
338InBlock.gif //selectObject();
339ExpandedBlockEnd.gif}

340 None.gif // 往前翻月份
341 ExpandedBlockStart.gifContractedBlock.gif function  tiannetPrevMonth()  dot.gif {
342ExpandedSubBlockStart.gifContractedSubBlock.gif if(tiannetMonth>1)dot.gif{tiannetMonth--}elsedot.gif{tiannetYear--;tiannetMonth=12;}
343InBlock.gif tiannetSetDay(tiannetYear,tiannetMonth);
344InBlock.gif checkSelect(document.all.selTianMonth,tiannetMonth);
345InBlock.gif tiannetWriteHead();
346ExpandedBlockEnd.gif}

347 None.gif // 往后翻月份
348 ExpandedBlockStart.gifContractedBlock.gif function  tiannetNextMonth()  dot.gif {
349ExpandedSubBlockStart.gifContractedSubBlock.gif if(tiannetMonth==12)dot.gif{tiannetYear++;tiannetMonth=1}elsedot.gif{tiannetMonth++}
350InBlock.gif tiannetSetDay(tiannetYear,tiannetMonth);
351InBlock.gif checkSelect(document.all.selTianMonth,tiannetMonth);
352InBlock.gif tiannetWriteHead();
353ExpandedBlockEnd.gif}

354 None.gif // 向span标签中写入年、月、时、分等数据
355 ExpandedBlockStart.gifContractedBlock.gif function  tiannetWriteHead() dot.gif {
356InBlock.gif document.all.tiannetYearHead.innerText = tiannetYear + "";
357InBlock.gif document.all.tiannetMonthHead.innerText = tiannetMonth + "";
358InBlock.gif if( m_bolShowHour )  document.all.tiannetHourHead.innerText = " "+tiannetHour + "";
359InBlock.gif if( m_bolShowMinute ) document.all.tiannetMinuteHead.innerText = tiannetMinute + "";
360InBlock.gif tiannetSetValue(false);//给文本框赋值,但不隐藏本控件
361ExpandedBlockEnd.gif}

362 None.gif // 设置显示天
363 ExpandedBlockStart.gifContractedBlock.gif function  tiannetSetDay(yy,mm)  dot.gif {
364InBlock.gif  
365InBlock.gif setRealDayCount();//设置当月真实的日
366InBlock.gif tiannetWriteHead();
367InBlock.gif var strDateFont1 = "", strDateFont2 = "" //处理日期显示的风格
368ExpandedSubBlockStart.gifContractedSubBlock.gif for (var i = 0; i < 37; i++)dot.gif{tiannetArrDay[i]=""};  //将显示框的内容全部清空
369InBlock.gif var day1 = 1;
370InBlock.gif var firstday = new Date(yy,mm-1,1).getDay();  //某月第一天的星期几
371ExpandedSubBlockStart.gifContractedSubBlock.gif for (var i = firstday; day1 < getMonthCount(yy,mm)+1; i++)dot.gif{
372InBlock.gif  tiannetArrDay[i]=day1;day1++;
373ExpandedSubBlockEnd.gif }

374InBlock.gif //如果用于显示日的最后一行的第一个单元格的值为空,则隐藏整行。
375InBlock.gif //if(tiannetArrDay[35] == ""){
376InBlock.gif // document.all.trTiannetDay5.style.display = "none";
377InBlock.gif //} else {
378InBlock.gif // document.all.trTiannetDay5.style.display = "";
379InBlock.gif //}
380ExpandedSubBlockStart.gifContractedSubBlock.gif for (var i = 0; i < 37; i++)dot.gif
381InBlock.gif  var da = eval("document.all.tdTiannetDay"+i)     //书写新的一个月的日期星期排列
382ExpandedSubBlockStart.gifContractedSubBlock.gif  if (tiannetArrDay[i]!=""dot.gif
383InBlock.gif   //判断是否为周末,如果是周末,则改为红色字体
384ExpandedSubBlockStart.gifContractedSubBlock.gif   if(i % 7 == 0 || (i+1% 7 == 0)dot.gif{
385InBlock.gif   strDateFont1 = "<font color=#f0000>"
386InBlock.gif   strDateFont2 = "</font>"
387ExpandedSubBlockStart.gifContractedSubBlock.gif   }
 else dot.gif{
388InBlock.gif    strDateFont1 = "";
389InBlock.gif    strDateFont2 = ""
390ExpandedSubBlockEnd.gif   }

391InBlock.gif   da.innerHTML = strDateFont1 + tiannetArrDay[i] + strDateFont2;
392InBlock.gif   //如果是当前选择的天,则改变颜色
393ExpandedSubBlockStart.gifContractedSubBlock.gif   if(tiannetArrDay[i] == tiannetDay ) dot.gif{
394InBlock.gif    da.style.backgroundColor = "#CCCCCC";
395ExpandedSubBlockStart.gifContractedSubBlock.gif   }
 else dot.gif{
396InBlock.gif    da.style.backgroundColor = "#EFEFEF";
397ExpandedSubBlockEnd.gif   }

398InBlock.gif   da.style.cursor="hand"
399ExpandedSubBlockStart.gifContractedSubBlock.gif  }
 else dot.gif{
400InBlock.gif   da.innerHTML="";da.style.backgroundColor="";da.style.cursor="default"
401ExpandedSubBlockEnd.gif  }

402ExpandedSubBlockEnd.gif }
//end for
403InBlock.gif tiannetSetValue(false);//给文本框赋值,但不隐藏本控件
404ExpandedBlockEnd.gif}
// end function tiannetSetDay
405 None.gif// 根据option的值选中option
406 ExpandedBlockStart.gifContractedBlock.gif function  checkSelect(objSelect,selectValue)  dot.gif {
407InBlock.gif var count = parseInt(objSelect.length);
408ExpandedSubBlockStart.gifContractedSubBlock.gif if( selectValue < 10 && selectValue.toString().length == 2dot.gif{
409InBlock.gif  selectValue = selectValue.substring(1,2);
410ExpandedSubBlockEnd.gif }

411ExpandedSubBlockStart.gifContractedSubBlock.gif for(var i = 0;i < count;i ++)dot.gif{
412ExpandedSubBlockStart.gifContractedSubBlock.gif  if(objSelect.options[i].value == selectValue)dot.gif{
413InBlock.gif   objSelect.selectedIndex = i;
414InBlock.gif   break;
415ExpandedSubBlockEnd.gif  }

416ExpandedSubBlockEnd.gif }
//for
417ExpandedBlockEnd.gif}

418 None.gif // 选中年、月、时、分等下拉框
419 ExpandedBlockStart.gifContractedBlock.gif function  selectObject() dot.gif {
420InBlock.gif //如果年份小于允许的最小年份,则创建对应的option
421ExpandedSubBlockStart.gifContractedSubBlock.gif if( tiannetYear < tiannetYearSt ) dot.gif{
422ExpandedSubBlockStart.gifContractedSubBlock.gif  forvar i = tiannetYear;i < tiannetYearSt;i ++  )dot.gif{
423InBlock.gif   createOption(document.all.selTianYear,i,i + "");
424ExpandedSubBlockEnd.gif  }

425InBlock.gif  tiannetYearSt = tiannetYear;
426ExpandedSubBlockEnd.gif }

427InBlock.gif //如果年份超过允许的最大年份,则创建对应的option
428ExpandedSubBlockStart.gifContractedSubBlock.gif if( tiannetYear > tiannetYearEnd ) dot.gif{
429ExpandedSubBlockStart.gifContractedSubBlock.gif  forvar i = tiannetYearEnd+1;i <= tiannetYear;i ++  )dot.gif{
430InBlock.gif   createOption(document.all.selTianYear,i,i + "");
431ExpandedSubBlockEnd.gif  }

432InBlock.gif  tiannetYearEnd = tiannetYear;
433ExpandedSubBlockEnd.gif }

434InBlock.gif checkSelect(document.all.selTianYear,tiannetYear);
435InBlock.gif checkSelect(document.all.selTianMonth,tiannetMonth);
436InBlock.gif if( m_bolShowHour )  checkSelect(document.all.selTianHour,tiannetHour);
437InBlock.gif if( m_bolShowMinute ) checkSelect(document.all.selTianMinute,tiannetMinute);
438ExpandedBlockEnd.gif}

439 None.gif // 给接受日期时间的控件赋值
440 None.gif// 参数bolHideControl - 是否隐藏控件
441 ExpandedBlockStart.gifContractedBlock.gif function  tiannetSetValue(bolHideControl) dot.gif {
442InBlock.gif var value = "";
443ExpandedSubBlockStart.gifContractedSubBlock.gif if!tiannetDay || tiannetDay == "" )dot.gif{
444InBlock.gif  tiannetOutObject.value = value;
445InBlock.gif  return;
446ExpandedSubBlockEnd.gif }

447InBlock.gif var mm = tiannetMonth;
448InBlock.gif var day = tiannetDay;
449InBlock.gif if( mm < 10 && mm.toString().length == 1) mm = "0" + mm;
450InBlock.gif if( day < 10 && day.toString().length == 1) day = "0" + day;
451InBlock.gif value = tiannetYear + tiannetDateSplit + mm + tiannetDateSplit + day;
452ExpandedSubBlockStart.gifContractedSubBlock.gif if( m_bolShowHour )dot.gif{
453InBlock.gif  var hour = tiannetHour;
454InBlock.gif  if( hour < 10 && hour.toString().length == 1 ) hour = "0" + hour;
455InBlock.gif  value += tiannetDateTimeSplit + hour;
456ExpandedSubBlockEnd.gif }

457ExpandedSubBlockStart.gifContractedSubBlock.gif if( m_bolShowMinute )dot.gif{
458InBlock.gif  var minute = tiannetMinute;
459InBlock.gif  if( minute < 10 && minute.toString().length == 1 ) minute = "0" + minute;
460InBlock.gif  value += tiannetTimeSplit + minute;
461ExpandedSubBlockEnd.gif }

462InBlock.gif tiannetOutObject.value = value;
463InBlock.gif //document.all.divTiannetDate.style.display = "none";
464ExpandedSubBlockStart.gifContractedSubBlock.gif if( bolHideControl ) dot.gif{
465InBlock.gif  tiannetHideControl();
466ExpandedSubBlockEnd.gif }

467ExpandedBlockEnd.gif}

468 None.gif // 是否显示时间
469 ExpandedBlockStart.gifContractedBlock.gif function  showTime() dot.gif {
470ExpandedSubBlockStart.gifContractedSubBlock.gif if!m_bolShowHour && m_bolShowMinute)dot.gif{
471InBlock.gif  alert("如果要选择分钟,则必须可以选择小时!");
472InBlock.gif  return;
473ExpandedSubBlockEnd.gif }

474InBlock.gif hideElementsById(new Array("tiannetHourHead","selTianHour","tiannetMinuteHead","selTianMinute"),true);
475ExpandedSubBlockStart.gifContractedSubBlock.gif if( m_bolShowHour )dot.gif{
476InBlock.gif  //显示小时
477InBlock.gif  hideElementsById(new Array("tiannetHourHead"),false);
478ExpandedSubBlockEnd.gif }

479ExpandedSubBlockStart.gifContractedSubBlock.gif if( m_bolShowMinute )dot.gif{
480InBlock.gif  //显示分钟
481InBlock.gif  hideElementsById(new Array("tiannetMinuteHead"),false);
482ExpandedSubBlockEnd.gif }

483ExpandedBlockEnd.gif}

484 None.gif // 弹出显示日历选择控件,以让用户选择
485 ExpandedBlockStart.gifContractedBlock.gif function  tiannetPopCalendar() dot.gif {
486InBlock.gif //隐藏下拉框,显示相对应的head
487InBlock.gif hideElementsById(new Array("selTianYear","selTianMonth","selTianHour","selTianMinute"),true);
488InBlock.gif hideElementsById(new Array("tiannetYearHead","tiannetMonthHead","tiannetHourHead","tiannetMinuteHead"),false);
489InBlock.gif tiannetSetDay(tiannetYear,tiannetMonth);
490InBlock.gif tiannetWriteHead();
491InBlock.gif showTime();
492InBlock.gif var dads  = document.all.divTiannetDate.style;
493InBlock.gif var iX, iY;
494InBlock.gif  
495InBlock.gif var h = document.all.divTiannetDate.offsetHeight;
496InBlock.gif var w = document.all.divTiannetDate.offsetWidth;
497InBlock.gif //计算left
498InBlock.gif if (window.event.x + h > document.body.offsetWidth - 10    )
499InBlock.gif  iX = window.event.x - h - 5 ;
500InBlock.gif else
501InBlock.gif  iX = window.event.x + 5;  
502InBlock.gif if (iX <0)  
503InBlock.gif  iX=0;
504InBlock.gif //计算top
505InBlock.gif iY = window.event.y;
506InBlock.gif if (window.event.y + w > document.body.offsetHeight - 10   )
507InBlock.gif  iY = document.body.scrollTop + document.body.offsetHeight - w - 5 ;
508InBlock.gif else
509InBlock.gif  iY = document.body.scrollTop +window.event.y + 5;  
510InBlock.gif if (iY <0)  
511InBlock.gif  iY=0;
512InBlock.gif dads.left = iX;
513InBlock.gif dads.top = iY;
514InBlock.gif tiannetShowControl();
515InBlock.gif selectObject();
516ExpandedBlockEnd.gif}

517 None.gif // 隐藏日历控件(同时显示被强制隐藏的标签)
518 ExpandedBlockStart.gifContractedBlock.gif function  tiannetHideControl() dot.gif {
519InBlock.gif document.all.divTiannetDate.style.display = "none";
520InBlock.gif tiannetShowObject();
521InBlock.gif arrTiannetHide = new Array();//将被隐藏的标签对象清空
522ExpandedBlockEnd.gif}

523 None.gif // 显示日历控件(同时隐藏会遮挡的标签)
524 ExpandedBlockStart.gifContractedBlock.gif function  tiannetShowControl() dot.gif {
525InBlock.gif document.all.divTiannetDate.style.display = "";
526InBlock.gif tiannetHideObject("SELECT");
527InBlock.gif tiannetHideObject("OBJECT");
528ExpandedBlockEnd.gif}

529 None.gif // 根据标签名称隐藏标签。如会遮住控件的select,object
530 ExpandedBlockStart.gifContractedBlock.gif function  tiannetHideObject(strTagName)  dot.gif {
531InBlock.gif 
532InBlock.gif x = document.all.divTiannetDate.offsetLeft;
533InBlock.gif y = document.all.divTiannetDate.offsetTop;
534InBlock.gif h = document.all.divTiannetDate.offsetHeight;
535InBlock.gif w = document.all.divTiannetDate.offsetWidth;
536InBlock.gif 
537InBlock.gif for (var i = 0; i < document.all.tags(strTagName).length; i++)
538ExpandedSubBlockStart.gifContractedSubBlock.gif dot.gif{
539InBlock.gif  
540InBlock.gif  var obj = document.all.tags(strTagName)[i];
541InBlock.gif  if (! obj || ! obj.offsetParent)
542InBlock.gif   continue;
543InBlock.gif  // 获取元素对于BODY标记的相对坐标
544InBlock.gif  var objLeft   = obj.offsetLeft;
545InBlock.gif  var objTop    = obj.offsetTop;
546InBlock.gif  var objHeight = obj.offsetHeight;
547InBlock.gif  var objWidth = obj.offsetWidth;
548InBlock.gif  var objParent = obj.offsetParent;
549InBlock.gif  
550ExpandedSubBlockStart.gifContractedSubBlock.gif  while (objParent.tagName.toUpperCase() != "BODY")dot.gif{
551InBlock.gif   objLeft  += objParent.offsetLeft;
552InBlock.gif   objTop   += objParent.offsetTop;
553InBlock.gif   objParent = objParent.offsetParent;
554ExpandedSubBlockEnd.gif  }

555InBlock.gif  //alert("控件左端:" + x + "select左端" + (objLeft + objWidth) + "控件底部:" + (y+h) + "select高:" + objTop);
556InBlock.gif  
557InBlock.gif  var bolHide = true;
558ExpandedSubBlockStart.gifContractedSubBlock.gif  if( obj.style.display == "none" || obj.style.visibility == "hidden" || obj.getAttribute("Author"== "tiannet" )dot.gif{
559InBlock.gif   //如果标签本身就是隐藏的,则不需要再隐藏。如果是控件中的下拉框,也不用隐藏。
560InBlock.gif   bolHide = false;
561ExpandedSubBlockEnd.gif  }

562ExpandedSubBlockStart.gifContractedSubBlock.gif  if(  ( (objLeft + objWidth) > x && (y + h + 20> objTop && (objTop+objHeight) >  y && objLeft < (x+w) ) && bolHide )dot.gif{
563InBlock.gif   //arrTiannetHide.push(obj);//记录被隐藏的标签对象
564InBlock.gif   arrTiannetHide[arrTiannetHide.length] = obj;
565InBlock.gif   obj.style.visibility = "hidden";
566ExpandedSubBlockEnd.gif  }

567InBlock.gif  
568InBlock.gif  
569ExpandedSubBlockEnd.gif }

570ExpandedBlockEnd.gif}

571 None.gif // 显示被隐藏的标签
572 ExpandedBlockStart.gifContractedBlock.gif function  tiannetShowObject() dot.gif {
573ExpandedSubBlockStart.gifContractedSubBlock.gif for(var i = 0;i < arrTiannetHide.length;i ++)dot.gif{
574InBlock.gif  //alert(arrTiannetHide[i]);
575InBlock.gif  arrTiannetHide[i].style.visibility = "";
576ExpandedSubBlockEnd.gif }

577ExpandedBlockEnd.gif}

578 None.gif // 初始化日期。
579 ExpandedBlockStart.gifContractedBlock.gif function  tiannetInitDate(strDate) dot.gif {
580InBlock.gif var arr = strDate.split(tiannetDateSplit);
581InBlock.gif tiannetYear = arr[0];
582InBlock.gif tiannetMonth = arr[1];
583InBlock.gif tiannetDay = arr[2];
584ExpandedBlockEnd.gif}

585 None.gif // 清空
586 ExpandedBlockStart.gifContractedBlock.gif function  tiannetClear() dot.gif {
587InBlock.gif tiannetOutObject.value = "";
588InBlock.gif tiannetHideControl();
589ExpandedBlockEnd.gif}

590 None.gif  // 任意点击时关闭该控件
591 ExpandedBlockStart.gifContractedBlock.gif function  document.onclick() dot.gif
592ExpandedSubBlockStart.gifContractedSubBlock.gif  with(window.event.srcElement)dot.gif
593InBlock.gif if (tagName != "INPUT" && getAttribute("Author"!= "tiannet")
594InBlock.gif    tiannetHideControl();
595ExpandedSubBlockEnd.gif  }

596ExpandedBlockEnd.gif}

597 None.gif // 按ESC键关闭该控件
598 ExpandedBlockStart.gifContractedBlock.gif function  document.onkeypress() dot.gif {
599ExpandedSubBlockStart.gifContractedSubBlock.gif if( event.keyCode == 27 )dot.gif{
600InBlock.gif  tiannetHideControl();
601ExpandedSubBlockEnd.gif }

602ExpandedBlockEnd.gif}

603 None.gif



posted on 2006-06-07 11:57  太阳雨 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/fairjob/archive/2006/06/07/419471.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值