一開始編寫一個函數,它選擇的日期和天數:
<center>Select Business Days To Add<br>
<select name="coll" id="t1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select><p>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script> $(function() { $("#datepicker").datepicker(); });
function getSelectedDate() {
var day = $("#datepicker").datepicker("getDate");
var daysToAdd = $("#t1").val();
return Number(daysToAdd) + Number(day.getDate());
}
</script>
<input id="datepicker" onchange="alert(getSelectedDate());"/>
我想工作日是指從星期一到星期五,因此星期五加1意味着實際上星期一而不是星期六。
而且
代碼(而不檢查週末)看起來像這樣:
<center>Select Business Days To Add<br>
<select name="coll" id="t1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select><p>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script> $(function() { $("#datepicker").datepicker(); });
function isEndOfMonth(date) {
// day of month from 1 to 31
var selectedDay = date.getDate();
// months with 31 days
if (date.getMonth() == 0 || date.getMonth() == 2 ||
date.getMonth() == 4 || date.getMonth() == 6 ||
date.getMonth() == 7 || date.getMonth() == 9 ||
date.getMonth() == 11) {
return selectedDay == 31;
}
// february 28/29 days TODO check for leap year!
if (date.getMonth() == 1) { return selectedDay == 28; }
// months with 30 days
if (date.getMonth() == 3 || date.getMonth() == 5 ||
date.getMonth() == 8 || date.getMonth() == 10) {
return selectedDay == 30;
}
return false;
}
function isEndOfYear(month) {
return month > 11;
}
function getSelectedDate() {
var day = $("#datepicker").datepicker("getDate");
var daysToAdd = Number($("#t1").val());
// values from which the new date is constructed
var selectedMonth = day.getMonth();
var selectedYear = day.getFullYear();
var selectedDay = day.getDate();
//
if (isEndOfMonth(day)) {
// start new month
selectedDay = 1;
selectedMonth++;
if (isEndOfYear(selectedMonth)) {
// start new year
selectedYear++;
}
}
// add business days
selectedDay += daysToAdd;
// TODO check if the result is weekend and jump over it. After a jump the same checks as above should be called!
return new Date(selectedYear, selectedMonth, selectedDay, 0, 0, 0, 0);
}
</script>
<input id="datepicker" onchange="alert(getSelectedDate());"/>
如果例如所選擇的日期是14.Oct.2013,選擇天,函數產生16.Oct.2013。