1

我需要实现一个 Jquery UI 日历,当用户单击任何日期时,它会自动选择下一个 MOM 或 EOM。

例如,如果用户在 4 月 9 日点击,则必须转到“4 月 15 日”,或者如果在 2 月 22 日点击,则必须转到“2 月 28 日”或“2 月 29 日”。

澄清一下:MOM 是“Middle of Month,每次都是 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日...

谢谢

4

3 回答 3

1

使用 datepicker 中的 onSelect 事件。请注意,如果您设置了 maxDate 选项并且它在 EOM 或 MOM 之前,则选择的值将是 maxDate。

更新:选择后关闭。请改用 onClose。

UPDATE2: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);
  }
于 2012-03-08T16:48:02.293 回答
1

我会这样做作为文本框的标准 jquery onchange 处理程序。原因是用户可以绕过日期选择器并手动输入日期。无论选择、输入或粘贴日期,您都希望自动更改日期。

于 2012-03-08T18:06:01.913 回答
0

适用于 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>
于 2012-03-08T18:02:17.753 回答