Knovour
4/28/2013 - 3:27 PM

gistfile1.js

<tr>
    <td colspan="7">
        <label for="hour">時:</label>
        <input type="number" id="hourText" min="0" max="23" value="0"/>
        <input type="range" id="hourRange" min="0" max="23" value="0"/>
    </td> 
</tr>
/*class selected的CSS內容*/
background-color: rgba(53, 53, 53, 0.4);
box-shadow: inset 0px 0px 3px rgba(35, 35, 35, 0.5);
$('#calendar tbody').on({click: function()
{  
    $('#calendar tbody td.selected').removeClass('selected');
   
    choose.date = parseFloat($(this).text());
    $(this).addClass('selected');
    showList();
}}, "td");
function drawCalendar(dateJSON)
{
    $('#year').html(dateJSON.year + "年 " + dateJSON.month + "月");
  
    var dateList = "<tr>";
    var dateEnd = new Date(dateJSON.year, dateJSON.month, 0).getDate(); //Get the end of the choosed month(28, 29, 30 or 31)
    var dayStart = new Date(dateJSON.year, (dateJSON.month - 1), 1).getDay(); //Get choosed month's first day
  
    if(dayStart > 0)
        dateList += "<td id=\"ignoreData\" colspan=" + dayStart + "></td>";
  
    var dateCount = 1;
    var SaturdayDate = 7 - dayStart;
    while(dateCount <= dateEnd)
    {
        dateList += "<td>" + (dateCount++) + "</td>";
 
        if(dateCount > SaturdayDate) //new week
        {                            //Final week
            SaturdayDate = ((dateCount + 6) > dateEnd) ? dateEnd : (dateCount + 6);
            dateList += "</tr><tr>";
        }     
    }       
     
    dateList += "</tr>";    
    $('#calendar tbody').html(dateList)
                        .find('td')
                        .filter(function() {return (parseFloat($(this).text()) == dateJSON.date);}) 
                        .addClass('selected');
    showList(); 
}   
/*左邊三角形(省略部份語法)*/
#lastMonth
{
    border-radius: 8px;
    border-style: solid;
    border-width: 15px 25px 15px 0;
    border-color: transparent rgba(53, 53, 53, 0.2) transparent transparent;
}
#lastMonth:active {border-color: transparent rgba(53, 53, 53, 0.5) transparent transparent;}
//jQuery Event

$('#lastMonth').click(function(){changeMonth(-1)});
$('#year').click(     function(){changeMonth(0)}); //back to current year
$('#nextMonth').click(function(){changeMonth(1)});
 
function changeMonth(changeRange)
{
    choose.month = (changeRange == 0) ? current.month : (choose.month += changeRange);
  
    var lastOrNextYear = (choose.month > 12) - (choose.month < 1); //Jump to Last Year(= -1) or Next Year(= 1) or not(= 0)
    choose.year += lastOrNextYear;
    choose.month -= 12 * lastOrNextYear; //Last Year(0 + 12), Next Year(13 - 12)
  
    var currentYearAndMonth = (choose.year == current.year && choose.month == current.month)
    choose.date = currentYearAndMonth ? current.date : 1;
  
    drawCalendar(choose);
}
<thead>
    <tr>
        <th id="lastMonth"></th>
        <th colspan="5" id="year"></th>
        <th id="nextMonth"></th>
    </tr>
    <tr id="week">
        <th>日</th>
        <th>一</th>
        <th>二</th>
        <th>三</th>
        <th>四</th>
        <th>五</th>
        <th>六</th>
    </tr>
</thead>
function showList()
    {$('#calendar caption').html($('#year').text() + choose.date + "日 " + prependZero(choose.hour) + ":" + prependZero(choose.minute));}
 
function prependZero(vari) {return (vari < 10) ? ("0" + vari) : vari;}
//setTimeNumber 與 setTimeRange function
$('#hourText').change( function() {setTimeRange (this, $(this).val());});
$('#hourRange').change(function() {setTimeNumber(this, $(this).val());});
 
function setTimeNumber(id, value) 
{
    $(id).prev().val(value);
    setTime();
    showList();
}
 
function setTimeRange(id, value)
{
    var NotANumber = isNaN(parseFloat(value));
    var higherThanMaxValue = (value > parseFloat($(id).attr("max")));
    var lowerThanMinValue =  (value < parseFloat($(id).attr("min")));
    if(NotANumber || higherThanMaxValue || lowerThanMinValue)
    {
        $(id).val($(id).next().val());
        return;
    }
  
    $(id).next().val(value);
    setTime();
    showList();
}
 
function setTime()
{
    choose.hour = $('#hourRange').val();
    choose.minute = $('#minuteRange').val();
}
var current = 
{
    'year':  new Date().getFullYear(),
    'month': new Date().getMonth() + 1,
    'date':  new Date().getDate()
};
 
var choose = 
{
    'year':  current.year,
    'month': current.month,
    'date':  current.date,
    'hour':  0,
    'minute':0
};