2013-02-20 4 views
3

У меня есть следующий код, который отлично работает на datepicker, прикрепленный к входу, но не запускает beforeshow и beforeshowday части, когда используется с встроенным datepicker.jquery - beforeshow и beforeshowday на inline datepicker

Что я могу сделать, чтобы обойти это?

$('.mydate').datepicker({ 
     showWeek: true, 
     firstDay: 1, 
     dateFormat: 'yy, m, d', 
     minDate: 0, 
     maxDate: '+2Y', 
     showOtherMonths: true, 
     selectOtherMonths: true, 
     numberOfMonths: 2, 
     beforeShow: function(input, inst) { 
      selectdatesElem = $(input).siblings("div").find("select.startdates"); 
      $(input).siblings("div").find("select.startdates").find("option").each(function() { 
        startDates.push($(this).val()) 
      }); 
      $(input).siblings("div").find("select.availdates").find("option").each(function() { 
        eventDates.push($(this).val()) 
      }); 
     }, 
     beforeShowDay: function(date) { 
      for (var i = 0; i < eventDates.length; i++) { 
        if (date.getFullYear()+", "+date.getMonth()+", "+date.getDate() == eventDates[i]) { 
         return [false, 'eventDay']; 
        } 
      } 
      for (var i = 0; i < startDates.length; i++) { 
        if (date.getFullYear()+", "+date.getMonth()+", "+date.getDate() == startDates[i]) { 
         return [true, 'eventDay']; 
        } 
      } 
      return [false, '']; 
     }, 
     onSelect: function(dateText, input, inst) { 
      var selectedDateParts = dateText.split(','); 
      selectdatesElem.val(parseInt(selectedDateParts[0]) + ", " + (parseInt(selectedDateParts[1])-1) + ", " + parseInt(selectedDateParts[2])).change(); 
     } 
    }); 
+0

Что вы подразумеваете под «встроенным дампикером»? –

+0

'

' – Tom

+0

Что такое 'EventDates'? – j08691

ответ

0

Я положил это через JSLint и вернулся с некоторой отсутствующей и var i запятой уже была объявлена ​​(удалить вар из второго цикла). Линии, отсутствующие с запятой:

startDates.push($(this).val()) 
eventDates.push($(this).val()) 

Он также вернулся с этой линией, не имеющей параметр radix. Радикс - это основание, в котором находится значение (десятичное, двоичное, шестнадцатеричное и т. Д.). Если вы просто хотите десятичную надстройки, от 10 до конца Вала() и ParseInt() функции, как и

selectdatesElem.val(parseInt(selectedDateParts[0], 10) + ", " + (parseInt(selectedDateParts[1], 10) - 1) + ", " + parseInt(selectedDateParts[2],10),10).change(); 

я сомневаюсь, эти изменения будут исправить это, но это стоит выстрела.

Я изучил его немного больше, и он будет работать с beforeShow, но когда я добавляю beforeShowDay, он не отображается.

Я некоторое время смотрел на код и api docs, и это звучало так, как будто должно быть поле ввода вместе с datepicker. Я вижу, что вы читаете из элементов select, но я думаю, что в beforeShow отсутствует элемент ввода, который ему нужен.

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