毫無疑問,這隻程式會改版,還想看說明的人請看,不想的話,載點裡的一定是最新的:http://kelunyang.wordpress.com/tag/javascript%E6%97%A5%E6%9B%86/
話說我修改了http://www.dynarch.com/projects/calendar/的日曆,寫了一個新的日曆程式(可以說是全新的,除了幾個method之外我全改了),讓他變成比較適合長時間的日期選擇,另外針對日本和台灣常用的年號(平成、民國等等),我增加了一個年份修正的功能,也就是我會讓系統自動加或者減一定的年分(例如民國是-1911),當然日本天皇年號會換,這不在我的設計考慮中,程式畫面如下XD
那要下載的就請點一下下面的連結吧,安裝方式請看裡面的sample或者下面的文章XD
測試網頁在此:http://www.nyko.com.tw/test/sample.htm,如果哪些我把這一頁砍了,把檔案下載回家自己啟動sample來看也一樣XD
授權說明:About裡Designer可以的話請留著吧,不過高興拿掉就拿掉,授權就是隨你改啦XDDDD
那會設計這個日曆是因為去年在設計問卷系統的時候找到了Nothing is Everything的部落格(http://new-acos.blogspot.com/2007/07/javascript-calendar.html)中介紹了http://www.dynarch.com/projects/calendar/的JavaScript的日曆,用了幾個月之後發現有點麻煩,就是這種日曆應該很適合當作少數幾天,或者是行事曆使用,如果要選的時間一長就很麻煩,就像是你不會拿Windows小時中關掉打字模式直接「上一年」/「下一年」按到你出生的日期(偏偏這就是很多問卷會問的問題),如果直接開放文字欄位的話,變成漫無限制也很麻煩(當然好的Client-Server設計就是Server也得再做一次檢查啦),而且最麻煩的就是2/29這個問題,所以才興起了改寫的想法,期中考完之後花了三四天終於改寫完(其實改寫不難,但是原本Calendar提供很龐大的API得慢慢改,再研究到底要不要留)
那以下就是簡單的使用教學
首先,要使用這個JavaScript,必須先掛入這四個檔案
<link href="calendar-system.css" rel="stylesheet" type="text/css" /> //CSS,可修改
<script type="text/javascript" src="calendar.js"></script> //主程式
<script type="text/javascript" src="calendar-setup.js"></script> //建構式
<script type="text/javascript" src="calendar-en.js"></script> //語系檔,和原始的Calendar相容
然後再用設定函式來啟動Calendar
Calendar.setup({
displayArea: "value",//顯示區塊
inputField:"val",//表單輸入區塊
daFormat: "%Y-%m-%d", //顯示區塊輸入格式,請參考原始原件的說明檔案
ifFormat: "%Y-%m-%d", //輸入區塊輸入格式,請參考原始原件的說明檔案
button: "Div1", //啟動按鈕
showsTime:false,//顯示時間
yearsub:-1911 //年分修正
});
這樣Calendar就會被附加上去,可以正常使用了XD
最後講一下開發經驗,就是JavaScript沒有OOP,所以要寫這種類似OO的程式真的很麻煩,這樣一個實作讓我大概能了解O’reilly那本犀牛書上特別講了JavaScript的函式範圍(Scope),比如說
function() {
var a=5;
document.getElementById("abc").onmousedown = function() { alert(a); }
}
這樣把abc點一下之後就會看到5跳出來,這也就是雖然var是區域變數,但是onmousedown的function literal在原本更大的function之下,所以呼叫a還是一樣會出來,這點還蠻有趣的,其他比較有趣的大致上就是比如說傳入abc這個function literal,可以用abc()來啟動他,製造出callback的效果
嗯,那接下來就是HTML輸入區和整個問卷系統的改寫了,先等我應付完期末報告再說XDDDD