jquery - 内联日期选择器上的 beforeshow 和 beforeshowday

标签 jquery jquery-ui jquery-ui-datepicker

我有以下代码,它可以在附加到输入的日期选择器上正常工作,但与内联日期选择器一起使用时不会运行 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();
        }
    });

最佳答案

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

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

返回时该行还缺少基数参数。基数是值的基数(十进制、二进制、十六进制等)。如果您只想在 val() 和 parseInt() 函数的末尾添加十进制,10,如下所示

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

我怀疑这些更改能否解决这个问题,但值得一试。

我进一步研究了一下,它会与 beforeShow 一起运行,但是当我添加 beforeShowDay 时,它不会显示。

我看了一会儿代码和 api 文档,听起来需要有一个输入字段和日期选择器。我看到您正在从 select 元素中读取内容,但我认为 beforeShow 缺少它需要的输入元素。

关于jquery - 内联日期选择器上的 beforeshow 和 beforeshowday,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980414/

相关文章:

javascript - 如何在 ASP.NET MVC 中重置 &lt;input type ='file'/>

javascript - JQuery 追加在 JQuery 单击函数中不起作用

jquery - 在jqgrid的列中添加图像

javascript - 在 Knockout Foreach 循环中生成 ID

javascript - 如何在 Angular 2 中使用 jQuery UI

Javascript 检查日期是否有效,如果无效则更改它

jQuery 日期选择器不验证

javascript - 选中 2 个复选框时更改边框颜色(同时禁用其余复选框)

jquery ui datepicker 仅日/月,不选择年份

javascript - 关于函数语法、jQuery datepicker、beforeShowDay 选项的 2 个问题