亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

純javascript制作日歷控件

2024-05-06 16:23:18
字體:
來源:轉載
供稿:網友

本文給大家分享的是使用純javascript實現的日歷控件的代碼,筆者也是第一次寫控件,摸索著前行,

以前要用到日歷控件都是直接從網上下載一套源碼來使用,心里一直有個梗,就是想自己動手寫一個日歷控件,最近剛好來了興趣,時間上也允許,于是自己摸索寫了一個,功能還算完善,界面就湊合了??赡茏钪档谜f的一點就是讓input控件內部右邊顯示一個按鈕,我是直接給input加了個背景,然后把input的邊框去掉實現的。

這個是最初版的,再往后打算做出純javascript版的,再往后打算用JQuery做一套。

 

 
  1. <!doctype html> 
  2. <html> 
  3. <head> 
  4. <meta charset="utf-8"
  5. <title>日歷控件</title> 
  6. <style> 
  7. #date_text { 
  8. background-image: url(images/input.png); 
  9. background-repeat:no-repeat; 
  10. width: 198px; 
  11. height: 27px; 
  12. border:none; 
  13. padding-left:5px; 
  14. cursor:pointer; 
  15.  
  16. #cal_body { 
  17. width: 198px; 
  18. height: auto; 
  19. overflow:hidden; 
  20. border: solid 1px #CCCCCC; 
  21. display: none; 
  22. position:absolute; 
  23. z-index:10; 
  24.  
  25. .line { 
  26. width:100%; 
  27. height:26px; 
  28. float:left; 
  29. background-color:#0FF; 
  30. font-size:14px; 
  31.  
  32. .cube { 
  33. float:left; 
  34. width:26px; 
  35. height:26px; 
  36. line-height:26px; 
  37. text-align:center; 
  38. margin-left:2px; 
  39. margin-bottom:2px; 
  40.  
  41. .btn { 
  42. float:left; 
  43. background-color:#CCC; 
  44. margin-left:10px; 
  45. width:20px; 
  46. height:20px; 
  47. text-align:center; 
  48. line-height:20px; 
  49. border-radius:3px; 
  50. border:solid 1px; 
  51. margin-top:2px; 
  52. cursor:pointer; 
  53.  
  54. .year_month { 
  55. float:left; 
  56. margin-left:10px; 
  57. width:90px; 
  58. height:19px; 
  59. text-align:center; 
  60. line-height:19px; 
  61. border-radius:6px; 
  62.  
  63. .end_tag { 
  64. height:26px; 
  65. line-height:26px; 
  66. margin-left:10px; 
  67. </style> 
  68. <script> 
  69. Date.prototype.toFormatString = function(){ 
  70. var result = this.getFullYear() + "-" + (this.getMonth() + 1) + "-" + this.getDate(); 
  71. return result; 
  72. }; 
  73.  
  74. var today = new Date(); 
  75. var month_big = new Array("1","3","5","7","8","10","12"); //包含所有大月的數組 
  76. var month_small = new Array("4","6","9","11"); //包含所有小月的數組  
  77.  
  78. //判斷數組array中是否包含元素obj的函數,包含則返回true,不包含則返回false 
  79. function array_contain(array, obj){ 
  80. for (var i = 0; i < array.length; i++){ 
  81. if (array[i] == obj) 
  82. return true
  83. return false
  84.  
  85. //判斷年份year是否為閏年,是閏年則返回true,否則返回false 
  86. function isLeapYear(year){ 
  87. var a = year % 4; 
  88. var b = year % 100; 
  89. var c = year % 400; 
  90. if( ( (a == 0) && (b != 0) ) || (c == 0) ){ 
  91. return true
  92. return false
  93.  
  94. function hideCalendar(){ 
  95. var calbody = document.getElementById("cal_body"); 
  96. cal_body.style.display = "none"
  97.  
  98. function showCalendar(){  
  99. var calbody = document.getElementById("cal_body"); 
  100. var style = getDefaultStyle(calbody,"display"); 
  101. if(style == "none"
  102. cal_body.style.display = "block"
  103. if(style == "block"
  104. cal_body.style.display = "none"
  105.  
  106. var date_text = document.getElementById("date_text"); 
  107. var val = date_text.value; 
  108. init(val); 
  109.  
  110. function init(val){  
  111. clearCube(); 
  112.  
  113. var temp_date; 
  114. var date_text = document.getElementById("date_text"); 
  115. if(val == ""){ 
  116. temp_date = today; 
  117. date_text.value = today.toFormatString(); 
  118. else
  119. temp_date = new Date(val);  
  120.  
  121. var year = temp_date.getFullYear(); 
  122. var month = temp_date.getMonth() + 1; 
  123. var date = temp_date.getDate(); 
  124. temp_date.setDate(1); 
  125.  
  126. var start = temp_date.getDay() + 7; 
  127. var end; 
  128.  
  129. if(array_contain(month_big, month)){ 
  130. end = start + 31; 
  131. else if(array_contain(month_small, month)){ 
  132. end = start + 30; 
  133. else
  134. if(isLeapYear(year)){ 
  135. end = start + 29; 
  136. else
  137. end = start + 28; 
  138.  
  139. for(var i = start; i < end; i++){ 
  140. var cube = document.getElementsByClassName("cube").item(i); 
  141. cube.innerHTML = i - start + 1; 
  142.  
  143. cube.style.cursor = "pointer"
  144. cube.onmouseover = function(){ 
  145. this.style.backgroundColor = '#0FF'
  146. if(date == (i - start + 1)) 
  147. cube.style.backgroundColor = '#0FF'
  148. else
  149. cube.onmouseout = function(){ 
  150. this.style.backgroundColor = ''
  151. cube.onclick = function(){ 
  152. date_text.value = year + "-" + month + "-" + this.innerHTML; 
  153.  
  154. cal_body.style.display = "none";  
  155.  
  156. document.getElementById("text_year").value = year; 
  157. document.getElementById("text_month").value = month; 
  158.  
  159. function clearCube(){ 
  160. for(var i=7; i < 49; i++){ 
  161. var cube = document.getElementsByClassName("cube").item(i); 
  162. cube.innerHTML = ""
  163. cube.style.backgroundColor = ""
  164.  
  165. function yearDown(){ 
  166. if(isValidated()){ 
  167. var old_year = parseInt(document.getElementById("text_year").value); 
  168. if(old_year > 1960){ 
  169. var year = old_year - 1; 
  170. var month = parseInt(document.getElementById("text_month").value); 
  171. var val = year + "-" + month + "-" + 1; 
  172. init(val); 
  173.  
  174. function yearUp(){ 
  175. if(isValidated()){ 
  176. var old_year = parseInt(document.getElementById("text_year").value); 
  177. if(old_year < 2050){ 
  178. var year = old_year + 1; 
  179. var month = parseInt(document.getElementById("text_month").value); 
  180. var val = year + "-" + month + "-" + 1; 
  181. init(val); 
  182.  
  183. function monthDown(){ 
  184. if(isValidated()){ 
  185. var old_month = parseInt(document.getElementById("text_month").value) 
  186. if(old_month > 1){ 
  187. var year = parseInt(document.getElementById("text_year").value); 
  188. var month = old_month - 1; 
  189. var val = year + "-" + month + "-" + 1; 
  190. init(val); 
  191. else { 
  192. var year = parseInt(document.getElementById("text_year").value) - 1; 
  193. var month = 12; 
  194. var val = year + "-" + month + "-" + 1; 
  195. init(val); 
  196.  
  197.  
  198. function monthUp(){ 
  199. if(isValidated()){ 
  200. var old_month = parseInt(document.getElementById("text_month").value) 
  201. if(old_month < 12){ 
  202. var year = parseInt(document.getElementById("text_year").value); 
  203. var month = parseInt(document.getElementById("text_month").value) + 1; 
  204. var val = year + "-" + month + "-" + 1; 
  205. init(val); 
  206. else { 
  207. var year = parseInt(document.getElementById("text_year").value) + 1; 
  208. var month = 1; 
  209. var val = year + "-" + month + "-" + 1; 
  210. init(val); 
  211.  
  212. function isValidated(){ 
  213. var year = document.getElementById("text_year").value; 
  214. var month = document.getElementById("text_month").value; 
  215. if(isNaN(year) || isNaN(month)){ 
  216. alert("請輸入正確的年份/月份"); 
  217. return false
  218. else
  219. if(year%1 != 0 || month%1 != 0){ 
  220. alert("請輸入正確的年份/月份"); 
  221. return false
  222. else
  223. year = parseInt(year); 
  224. if(year < 1960 || year > 2050){ 
  225. alert("請輸入1960~2050之間的年份!"); 
  226. return false
  227. else if(month < 1 || month >12){ 
  228. alert("請輸入正確的月份!"); 
  229. return false
  230. else
  231. return true
  232.  
  233. function changed(){ 
  234. if(isValidated()){ 
  235. var year = document.getElementById("text_year").value; 
  236. var month = document.getElementById("text_month").value; 
  237. var val = year + "-" + month + "-" + 1; 
  238. init(val); 
  239.  
  240. function getDefaultStyle(obj,attribute){  
  241. return obj.currentStyle?obj.currentStyle[attribute]:document.defaultView.getComputedStyle(obj,false)[attribute]; 
  242. </script> 
  243. </head> 
  244.  
  245. <body> 
  246. <div id="container"
  247. <div id="input_bg"><input id="date_text" type="text" readonly onClick="showCalendar()" /></div> 
  248. <div id="cal_body"
  249. <div class="line"><div class="btn" id="year_down" onClick="yearDown()">-</div><input class="year_month" id="text_year" value="2015" onChange="changed()"><div class="btn" id="year_up" onClick="yearUp()">+</div><span class="end_tag">年</span></div> 
  250. <div class="line"><div class="btn" id="month_down" onClick="monthDown()">-</div><input class="year_month" id="text_month" value="5" onChange="changed()"><div class="btn" id="month_up" onClick="monthUp()">+</div><span class="end_tag">月</span></div> 
  251. <div class="cube">日</div> 
  252. <div class="cube">一</div> 
  253. <div class="cube">二</div> 
  254. <div class="cube">三</div> 
  255. <div class="cube">四</div> 
  256. <div class="cube">五</div> 
  257. <div class="cube">六</div> 
  258. <div class="cube"></div> 
  259. <div class="cube"></div> 
  260. <div class="cube"></div> 
  261. <div class="cube"></div> 
  262. <div class="cube"></div> 
  263. <div class="cube"></div> 
  264. <div class="cube"></div> 
  265. <div class="cube"></div> 
  266. <div class="cube"></div> 
  267. <div class="cube"></div> 
  268. <div class="cube"></div> 
  269. <div class="cube"></div> 
  270. <div class="cube"></div> 
  271. <div class="cube"></div> 
  272. <div class="cube"></div> 
  273. <div class="cube"></div> 
  274. <div class="cube"></div> 
  275. <div class="cube"></div> 
  276. <div class="cube"></div> 
  277. <div class="cube"></div> 
  278. <div class="cube"></div> 
  279. <div class="cube"></div> 
  280. <div class="cube"></div> 
  281. <div class="cube"></div> 
  282. <div class="cube"></div> 
  283. <div class="cube"></div> 
  284. <div class="cube"></div> 
  285. <div class="cube"></div> 
  286. <div class="cube"></div> 
  287. <div class="cube"></div> 
  288. <div class="cube"></div> 
  289. <div class="cube"></div> 
  290. <div class="cube"></div> 
  291. <div class="cube"></div> 
  292. <div class="cube"></div> 
  293. <div class="cube"></div> 
  294. <div class="cube"></div> 
  295. <div class="cube"></div> 
  296. <div class="cube"></div> 
  297. <div class="cube"></div> 
  298. <div class="cube"></div> 
  299. <div class="cube"></div> 
  300. </div> 
  301. <div> 
  302. </body> 
  303. </html> 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩在线| 91精品国产综合久久香蕉的用户体验| 精品国产乱码久久久久酒店| www.欧美三级电影.com| 亚洲综合精品伊人久久| 欧美猛男性生活免费| 麻豆精品精华液| 欧美激情网友自拍| 国产精品久久久久久久久久久久久久| 欧美尺度大的性做爰视频| 欧美福利小视频| 国产97在线播放| 最近中文字幕日韩精品| 久久久久久亚洲精品不卡| 国产精品9999| 亚洲一区二区三区视频播放| 大量国产精品视频| 亚洲欧美制服综合另类| 欧美国产亚洲视频| 久久影院免费观看| 久久久亚洲福利精品午夜| 亚洲自拍中文字幕| 成人中文字幕在线观看| 国产精品影院在线观看| 91精品国产自产在线观看永久| 久久影院在线观看| 日韩美女福利视频| 亚洲视频在线观看| 成人免费网站在线观看| 欧美激情久久久| 日本成人在线视频网址| 一区二区成人av| 伊人精品在线观看| 国产精品美女免费| 久久精品夜夜夜夜夜久久| 亚洲qvod图片区电影| 日韩中文在线中文网在线观看| 欧美激情一区二区三区久久久| 色妞色视频一区二区三区四区| 成人国产亚洲精品a区天堂华泰| 国产精品美女在线| 精品少妇一区二区30p| 狠狠久久亚洲欧美专区| 日韩大胆人体377p| 欧美激情久久久久| 欧美另类第一页| 26uuu另类亚洲欧美日本老年| 懂色av中文一区二区三区天美| 91精品国产成人| 国产精品一区二区女厕厕| 亚洲国产精品福利| 日本不卡高字幕在线2019| 2019中文字幕免费视频| 日韩精品在线观看网站| 欧美大码xxxx| 日韩有码在线电影| 91在线免费观看网站| 色哟哟亚洲精品一区二区| 日韩av一区二区在线观看| 自拍偷拍亚洲一区| 精品国产精品三级精品av网址| 国内精品久久久久久久久| 综合国产在线观看| 97涩涩爰在线观看亚洲| 欧美一级免费看| 久久成人18免费网站| 国产精品久久久久久久久久久不卡| 亚洲精品之草原avav久久| 疯狂做受xxxx高潮欧美日本| 青青久久aⅴ北条麻妃| 日韩电影免费观看在线| 97涩涩爰在线观看亚洲| 精品久久香蕉国产线看观看亚洲| 国产精品一区二区久久久| 国产精品夫妻激情| 性色av一区二区三区免费| 91美女片黄在线观看游戏| 国产美女精彩久久| 欧美精品日韩www.p站| 亚洲精品美女在线| 国产精品免费久久久久影院| 中文字幕久久久av一区| 日韩中文字幕免费| 日韩一级裸体免费视频| 一区二区欧美在线| 亚洲综合精品一区二区| 国产欧美韩国高清| 亚洲第一中文字幕在线观看| 亚洲欧美一区二区三区情侣bbw| 97视频国产在线| 国产视频精品自拍| 日韩精品在线第一页| 国产日韩精品在线观看| 国产精品一区二区女厕厕| 亚洲福利在线视频| 国产99久久久欧美黑人| 91av在线网站| 欧美国产日韩在线| 亚洲成**性毛茸茸| 亚洲成人aaa| 成人精品一区二区三区电影黑人| 国产做受69高潮| 91夜夜未满十八勿入爽爽影院| 久久视频中文字幕| 欧美高清第一页| 久久国产精品电影| 国产日韩欧美在线播放| 日韩中文字幕国产精品| 国产欧美日韩精品在线观看| 不卡在线观看电视剧完整版| 日本欧美中文字幕| 日韩美女在线看| 亚洲精品欧美日韩| 国产福利视频一区二区| 国语自产精品视频在线看| 黄色精品一区二区| 欧美一级电影在线| 亚洲欧美国产精品| 欧美精品久久久久| 福利一区福利二区微拍刺激| 影音先锋欧美精品| 精品色蜜蜜精品视频在线观看| 国产精品96久久久久久| 亚洲精品欧美极品| 亚洲aaa激情| 国产成人一区二区三区电影| 国产精品大片wwwwww| 日韩在线视频免费观看高清中文| 国产精品高潮呻吟久久av黑人| 国产香蕉精品视频一区二区三区| 亚洲美女在线视频| 一区二区欧美久久| 久久99久国产精品黄毛片入口| 91精品在线影院| 2019亚洲日韩新视频| 午夜欧美大片免费观看| 久久免费视频在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 欧美大尺度激情区在线播放| 欧美精品一二区| 欧美天天综合色影久久精品| 川上优av一区二区线观看| 久久久精品欧美| 国产成人福利夜色影视| 欧美大全免费观看电视剧大泉洋| 91精品久久久久久久久青青| 欧美一级淫片播放口| 亚洲精品福利在线观看| 国产在线视频91| 亚洲jizzjizz日本少妇| xxxx性欧美| 精品国产一区二区三区久久狼黑人| 68精品久久久久久欧美| 欧美激情国产精品| 一区二区三区四区精品| 欧美国产日韩二区| 日韩av免费观影| 亚洲一区二区三区视频| 亚洲成av人影院在线观看| 欧美激情成人在线视频| 国产精品久久久久久久电影| 97视频网站入口| 国产一区香蕉久久| 日韩电影在线观看永久视频免费网站|