3

我有以下代码在附加到输入的日期选择器上工作正常,但在与内联日期选择器一起使用时不运行 beforeshow 和 beforeshowday 部分。

我能做些什么来解决这个问题?

$('.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();
        }
    });
4

1 回答 1

0

我把它通过 JSLint 并返回了一些缺少的分号并且var i已经被声明(从第二个 for 循环中删除 var)。缺少分号的行:

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

它还返回此行缺少基数参数。基数是值所在的基数(十进制、二进制、十六进制等)。如果您只想要十进制,则将 ,10 添加到 val() 和 parseInt() 函数的末尾,就像这样

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

我怀疑这些更改会解决它,但值得一试。

我对其进行了更多研究,它将与 beforeShow 一起运行,但是当我添加 beforeShowDay 时,它不会显示。

我看了一会儿代码和 api 文档,听起来好像需要一个输入字段以及日期选择器。我看到您正在阅读选择元素,但我认为 beforeShow 缺少它需要的输入元素。

于 2013-02-20T13:41:56.473 回答