jQuery Datepicker - несколько экземпляров и отключить ранее выбранные даты? - PullRequest
1 голос
/ 13 июля 2009

У меня есть страница, на которой пользователь может выбрать три разных дня встречи, используя jQuery UI Datepicker. Когда пользователь выбирает день в первом поле, я бы хотел, чтобы эта дата была заблокирована в двух других полях. В настоящее время я также отключаю воскресенья, но не могу заставить работать динамическое отключение даты.

    Appointment Time 1<br />
<input id="appointment1_date" type="text" name="appointment1_date" value="Select..." />

Appointment Time 2<br />
<input id="appointment2_date" type="text" name="appointment2_date" value="Select..." />

Appointment Time 3<br />
<input id="appointment3_date" type="text" name="appointment3_date" value="Select..." />


        <script type="text/javascript">
        function noSunday(date){
          var day = date.getDay();
                      return [(day > 0), ''];
          };
        </script>
        <script type="text/javascript">
        $(function() {
            $("#appointment1_date").datepicker(
            {
                minDate: +2, 
                beforeShowDay: noSunday
            });
        });
        $(function() {
            $("#appointment2_date").datepicker(
            {
                minDate: +2, 
                beforeShowDay: noSunday
            });
        });
        $(function() {
            $("#appointment3_date").datepicker(
            {
                minDate: +2, 
                beforeShowDay: noSunday
            });
        });
        </script>

Ответы [ 2 ]

1 голос
/ 13 июля 2009

Вы можете использовать функцию beforeShowDay для установки отключенных дат.

См. здесь для полного объяснения.

0 голосов
/ 04 августа 2009

Чтобы заблокировать даты из других полей, вы должны получить дату и выполнить сравнение в вашей функции обработки. С учетом предоставленного вами кода, следующее должно заменить noSunday:

function noSunday(date) {
      var day = date.getDay();
      return [
          (day > 0 &&
           date.valueOf() != $('#appointment1_date').datepicker('getDate').valueOf()
          ),
          ''
      ];
};

По сути, вы хотите не только убедиться, что day > 0, чтобы не было воскресенья, но также убедиться, что дата не равна дате, указанной appointment1_date. Использование .datepicker('getDate') и сравнение его valueOf() с date является ключом.

Возможно, вы захотите переименовать его в что-то вроде noSundayOrSelected или что-то столь же описательное.

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