YUI2( Yahoo! User Interface Library)のCalendar(カレンダー)(2)
もしかして...と思って、ざっくり期間設定のフォームとかできるんじゃない?と思って調べてみたら、ざっくり作れました。
forcusの制御が出来れば、期間設定のフォーム(GoogleAnalytics風)が出来そうな感じです。YUIのカレンダーってすごいなあ。
ソース(HTML)
- ざっくりなんで、最初の日は固定にしてあります
- prototype.jsも併用しています
<html> <head> <title>YUI Calendar</title> <script type="text/javascript" charset="UTF-8" src="../lib/prototype.js"></script> <script type="text/javascript" src="./yahoo-min.js"></script> <script type="text/javascript" src="./dom-min.js"></script> <script type="text/javascript" src="./event-min.js"></script> <script type="text/javascript" src="./calendar-min.js"></script> <script type="text/javascript" src="./yuiCalendar.js"></script> <link rel="stylesheet" type="text/css" href="./assets/calendar.css" /> <script type="text/javascript"> window.onload = function(){ Field.focus('fromDate'); setupCalendar(); }; function checkDate(type,args,obj) { //alert(type); alert(args); $('toDate').value = args[0]; setupCalendar($('fromDate').value, $('toDate').value); } </script> </head> <body> <h1>YUI Calendar</h1> <p>YUIのカレンダーテストです</p> <input id="fromDate" value="2009,10,1" /> <input id="toDate" value="" /> <div id="cal1Container"></div> </body> </html>
ソース(JavaScript/yuiCalendar.js)
function setupCalendar(fromdate, todate){ var options = { pages : 2 }; if((fromdate) && (todate)){ fromdate = fromdate.split(','); todate = todate.split(','); options.selected = fromdate[1] + '/' + fromdate[2] + '/' + fromdate[0] + '-' + todate[1] + '/' + todate[2] + '/' + todate[0]; } var cal1 = new YAHOO.widget.CalendarGroup( "cal1", /* ID名 */ "cal1Container", /* element名 */ options ); // YYYY/mm/dd /* cal1.cfg.setProperty("MDY_YEAR_POSITION", 1); cal1.cfg.setProperty("MDY_MONTH_POSITION", 2); cal1.cfg.setProperty("MDY_DAY_POSITION", 3); */ // 日本語 cal1.cfg.setProperty("WEEKDAYS_SHORT", [ "<font color='red'>日</font>", "月", "火", "水", "木", "金", "<font color='blue'>土</font>" ]); // 日本語 cal1.cfg.setProperty("MONTHS_LONG", [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" ]); // イベント cal1.selectEvent.subscribe(checkDate, cal1, true); cal1.render(); }