JQuery UI datepicker onChangeMonthYear и параметр inst - PullRequest
7 голосов
/ 12 сентября 2011
$('.selector').datepicker({
   onChangeMonthYear: function(year, month, inst) { ... }
});

Как использовать параметр 'inst' onChangeMonthYear для автоматического выбора первого дня месяца?

см. http://jsfiddle.net/sD8rL/

В настоящее время я использую приведенный ниже код, но я чувствую, что могу использовать переменную 'inst' более простым способом.

   $(".datepicker" ).datepicker({
      changeMonth: true,
      changeYear: true,
      maxDate:0,
      onChangeMonthYear: function(year, month, inst){
        // set date to 1st on year or month change

        // this seems  bit janky, but works
        $('#' + inst.id).datepicker( "setDate", month + '/1/' + year );

        // Can't I use the instatnce to set the date?

        // $(inst).datepicker( "setDate", month + '/1/' + year ); // fails
        // inst.datepicker( "setDate", month + '/1/' + year ); // fails
        // inst.selectedDay = 1; // fails
        // inst.currentDay = 1; // fails 
      }
  });

Ответы [ 2 ]

9 голосов
/ 12 сентября 2011

Если нет особой причины, по которой вы хотите использовать inst, вы всегда можете использовать this:

  onChangeMonthYear: function(year, month, inst){
     $(this).datepicker( "setDate", month + '/1/' + year );
  }

Посмотреть это в действии: http://jsfiddle.net/william/sD8rL/2/.

2 голосов
/ 02 октября 2012

Решение от William Niu не учитывает другие форматы даты (например, дд-мм-гггг).Вам лучше получить объект Date из вашего средства выбора даты и изменить его так, как вам нравится (т.е. установить первый день месяца).После внесения изменений вы можете повторно передать измененный объект Date в свой указатель даты.

    dateFormat: "dd-mm-yy",
    onChangeMonthYear: function(year, month, inst){
      var selectedDate = $(this).datepicker( "getDate" );//Date object
      selectedDate.setDate(1);//set first day of the month
      selectedDate.setMonth(month-1);//month is 1-12, setMonth is 0-11
      selectedDate.setFullYear(year);
      $(this).datepicker( "setDate", selectedDate );
   }

Таким образом, вы не будете перезаписывать формат даты (возможно, установленный во время инициализации средства выбора даты);)

Обратите внимание на формат месяца: datepicker обрабатывает формат 1-12 для месяцев, а объект Date - 0-11.

Надеюсь, это поможет, пока!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...