jQuery DataTable中的引导日期选择器在Laravel应用程序中不起作用

Posted

技术标签:

【中文标题】jQuery DataTable中的引导日期选择器在Laravel应用程序中不起作用【英文标题】:bootstrap datepicker inside jQuery DataTable not working in Laravel app 【发布时间】:2015-09-20 01:14:06 【问题描述】:

我尝试在 jQuery DataTable 单元格中插入一个 datepicker 字段而不是 <input type="month"/>。但是它不起作用。我尝试了不同的方法,但日历从未出现过,chrome 编辑器控制台也没有显示任何错误。但是它显示的当前解决方案:

Uncaught TypeError: Cannot read property 'left' of undefined
    Datepicker.place @ bootstrap-datepicker.js:609
    Datepicker.show @ bootstrap-datepicker.js:420
    b.extend.proxy.b.isFunction.i @ jquery-1.9.1.min.js:3
    b.event.dispatch @ jquery-1.9.1.min.js:3
    b.event.add.v.handle @ jquery-1.9.1.min.js:3

DataTable里面的代码是:


     className: '',
     orderable: false,
     data: function (row, type, set, meta) 
         return '<div class="input-append date">'+
                    '<input type="text" class="form-control" value="Carbon\Carbon::now()->format('m-Y')">'+
                    '<span class="add-on" id="datepick" ><i class="fa fa-calendar"></i></span>'+
                 '</div>'
     
,

以及初始化日期选择器的javascript

$(document).ready('.input-append .date').datepicker(
    format: "M/yyyy",
    minViewMode: 1,
    multidate: true,
    autoclose: true,
    beforeShowMonth: function (date)
        switch (date.getMonth())
            case 8:
                return false;
        
    ,
    toggleActive: true

);
$('#datepick').click(function () 
    $(this).next().datepicker('show');
);

感谢任何帮助或提示。

【问题讨论】:

创建 jsfiddle,可以帮助想要帮助的人 .input-append.date 之间的空格是您的问题中的错字,还是您的代码中的错字? @RichardDeeming 那是我目前的代码,但是即使没有空间它也不起作用 【参考方案1】:

由于input-appenddate 类都在同一个元素上,所以选择器中不应该有空格。使用空格,您正在寻找具有类date 的元素,它是具有类input-append 的元素的后代。没有它,你正在寻找一个同时拥有这两个类的元素。

另一个明显的问题是$(this).next().datepicker(...) 行。 The next method 返回匹配元素的紧随其后的兄弟。由于您在 #datepick 元素上调用它,它是 input-append 元素的最后一个子元素,因此不会有兄弟姐妹返回。我怀疑您需要改用the closest method。

最后,您的模板将相同的固定id 分配给每个add-on 元素。 ID 在文档中必须是唯一的。我建议删除 ID,并使用不同的选择器来查找触发元素。


    className: '',
    orderable: false,
    data: function (row, type, set, meta) 
        return '<div class="input-append date">'+
            '<input type="text" class="form-control" value="Carbon\Carbon::now()->format('m-Y')">'+
            '<span class="add-on" ><i class="fa fa-calendar"></i></span>'+
        '</div>'
    
,
...

$(document).ready('.input-append.date').datepicker(
    format: "M/yyyy",
    minViewMode: 1,
    multidate: true,
    autoclose: true,
    beforeShowMonth: function (date)
        switch (date.getMonth())
            case 8:
                return false;
        
    ,
    toggleActive: true
);

$(document).on("click", ".input-append.date .add-on", function () 
    $(this).closest(".input-append.date").datepicker('show');
);

【讨论】:

以上是关于jQuery DataTable中的引导日期选择器在Laravel应用程序中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 日期选择器优化引导输入标签

模式中的引导日期选择器不起作用

限制引导日期选择器选择最多 2 年的日期 - 不工作

引导日期选择器不工作

引导多个日期选择器

jQuery 仅适用于 DataTable 的第一页