我需要实现一个Jquery UI日历,当用户单击任何日期时,它会自动选择到下一个MOM或EOM。
例如,如果用户在4月9日单击,则必须转到"4月15日",或者如果点击2月22日,则必须转到"2月28日"或"2月29日"。
澄清:MOM是"月中,每次是15",从任何一个月的1到15。EOM是"月底,它是一个月的最后一天,1月31日,2月28日或29日,3月31日、4月30日、5月31日和6月30日,7月31日至8月31日9月30日10月31日11月30日12月31日…
感谢
我将作为文本框的标准jquery onchange处理程序来执行此操作。原因是用户可以绕过日期选择器,手动键入日期。无论是选择、键入还是粘贴日期,都希望自动更改日期。
使用日期选择器中的onSelect事件。请注意,如果您设置了maxDate选项,并且它在EOM或MOM之前,则所选的值将为maxDate。
UPDATE:选择后关闭。请改用onClose。
更新2:jsFiddle使用最新的jQuery UI
onClose: function(dateText, inst) {
var day = inst.currentDay,
month = inst.currentMonth,
year = inst.currentYear;
if (day <= 15) {
day = 15;
}
else {
day = 0;
if (month>10){
month = 0;
year++;
}
else
month++;
}
var d = new Date(year, month, day);
$(this).datepicker("setDate", d);
}
适用于IE6/IE7/IE8/IE9和FF、Chrome等的代码。
<script type="text/javascript">
$(function() {
$("#payperiodcalendar input").datepicker({
dateFormat: 'dd-M-yy',
onSelect: function(dateText, inst) {
var selectedDay = inst.currentDay,
selectedMonth = inst.currentMonth,
selectedYear = inst.currentYear;
if (selectedDay <= 15) {
var now = new Date(selectedYear, selectedMonth, 15);
} else {
var now = new Date(selectedYear, selectedMonth, LastDayOfMonth(selectedYear, selectedMonth));
}
$(this).attr("value", now.format("dd-MMM-yyyy"));
}
});
function LastDayOfMonth(Year, Month) {
Month++;
return (new Date((new Date(Year, Month, 1)) - 1)).getDate();
}
});
</script>