2017-01-20 2 views
0

Кто-нибудь знает, как я могу спровоцировать DatePicker уволить его OnClose() функции, как если бы пользователь сделал выбор и нажал кнопку Готово ?JQuery-UI Datepicker() нажмите кнопку Готово programmitally

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

Вот мой сценарий: я хочу, чтобы дата изменилась, когда пользователи выбрали кнопку выбора. Если пользователь выбирает опцию «YEAR», затем #StartDate изменения в январе 2016 года и #EndDate изменения декабря 2016 года Если пользователь выбирает опцию «МЕСЯЦ», то #StartDate изменения в январе 2017 года и #EndDate изменения Jan 2017.

Есть макс и мин и другие требования обрабатываются в initModule для обоих datepickers, что только получить выполняется, когда пользователь выбирает datepickers, изменяет эти даты, и сл icks на Сделано кнопка. Я хочу запустить эти события без необходимости вручную изменять даты.

В моем методе initModule:

// ----------------Begin Public Methods----------------------------// 
    var initModule = function() { 
     var currYear = new Date().getFullYear(); 

     // Hookup datepickers 
     $(#EndDate).datepicker({ 
      changeMonth: true, 
      changeYear: true, 
      showButtonPanel: true, 
      dateFormat: 'MM yy', 
      minDate: new Date(2013, 9, 1), 
      maxDate: '-1d', 
      beforeShow: function() { 
       setTimeout(function() { 
        $("#ui-datepicker-div").addClass('calendar-off'); 
       }, 0); 
      }, 

      onClose: function() { 
       var month = $(#ui-datepicker-div .ui-datepicker-month :selected").val(); 
       var year = $(#ui-datepicker-div .ui-datepicker-year :selected").val(); 

       $(this).datepicker('setDate' new Date(year, month, 1)); 
       onChangeEndDate(); 
      } 
     }); 
     . 
     . 
     . 
     . 
     . 
    }; 
    return { initModule: initModule }; 

Итак, я попытался $("#EndDate").click('onClose'); и $("#EndDate").trigger('onClose'); и я пошарил везде, чтобы найти ответ на безрезультатно.

Как я получаю исполнение в OnClose: функция() без необходимости вручную изменить дату в DatePicker и нажмите кнопку Готово ?

+0

не могли бы вы просто установите значение ввода даты на значение, которое вы хотите? И огонь событий, которые вы хотите? DatePicker - это просто графический инструмент для установки значения ввода даты. Вам не нужно взаимодействовать с ним. –

+0

Мне нужно запустить функцию onClose, чтобы установить минимальные и максимальные значения по мере необходимости. Я уже пытался установить значения, как вы предлагали, но датпикер борется со мной. Должен быть способ запуска datepicker, как если бы пользователь это сделал. Разве нет? – Patricia

ответ

2

Согласно API documentation, метод hide() закроет дату.

Итак, если вы хотите, чтобы закрыть DatePicker, вы должны сделать

$(#EndDate).datepicker("hide"); 
+0

Хорошая попытка, но выполнение никогда не переходит в функцию onClose(), которая возникает только тогда, когда пользователь меняет дату. – Patricia

+0

@Patricia он запускает onclose проверить это http://jsfiddle.net/8w8v9/2665/ –

+0

@SebastianKrysiak - Да, это работает в вашем jsfiddle, но обратите внимание, что это потому, что пользователь выбирает дату и закрывает datepicker. Я хочу подражать этому программному пользователю «БЕЗ» от пользователя datepicker. – Patricia

 Смежные вопросы

  • Нет связанных вопросов^_^