Вопрос

Мне нужно реализовать календарь jQuery ui, который, когда пользователи нажимают на любую дату, он автоматически выбирает на следующую маму или EOM.

Например, если пользователь нажимает 9 апреля, он должен перейти к «15 апреля», Или если щелчка 22 февраля он должен перейти на «28 февраля» или «29 февраля».

для разъяснения: Мама - «середина месяца, каждый раз, когда это 15», от 1 до 15 лет любого месяца. EOM - «конец месяца, это последний день месяца, 31 января, 28 или 29 января, 31 марта, 30 мая, 31 мая, 30 июня, 31 июля, 31 августа 31 авг, 30 октября, 31 ноября, 30 ноября,31 декабря ...

Спасибо

Это было полезно?

Решение 3

Код, который работает с IE6 / IE7 / IE8 / IE9 и FF, Chrome и etc.

    <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>
.

Другие советы

Я бы сделал это как стандартный обработчик jQuery Onchange для текстового поля.Причина в том, что пользователь может обойти сборник и введите дату вручную.Вы хотите, чтобы дата автоматически была изменена независимо от того, выбрана ли дата, введена в наставление.

Используйте событие onselect с DatePicker.Будьте в виду, что если у вас есть набор Maxdate Option, и его до того, как EOM или мама, выбранная значение будет 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);
  }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top