我正在使用Bootstrap Datapicker脚本(链接here),并且在设置开始日期时遇到问题。


  选项:startDate
  
  日期或字符串。默认值:开始时间
  
  可以选择的最早日期;所有更早的日期将被禁用。
  
  日期应为当地时区。字符串必须可以用format解析。


JavaScript:

function initializeDatePicker() {
    if ($.isFunction($.fn.datepicker)) {
        var datepickerLang = lang;
        if (datepickerLang === "nl") {
            datepickerLang = "nl-BE";
        }

        $(".input-group.date input").datepicker({
            autoclose: true,
            todayBtn: "linked",
            clearBtn: true,
            todayHighlight: true,
            language: datepickerLang,
            format: "dd-mm-yyyy",
            startDate: $(this).data("startdate")
        });
    }
}


HTML:

<div class="input-group date small">
    <input id="StartDate" class="form-control" name="StartDate" value="" data-is-required="True" data-startdate="01-12-2016" type="text">
    <div class="input-group-addon">
        <span class="fa fa-calendar"></span>
    </div>
</div>


有什么用?

如果我将startdate硬编码为:

startDate: new Date() => today

startDate: "01-12-2016"


什么不起作用?

如果我尝试从数据属性中获取日期,则无济于事。

startDate: new Date($(this).data("startdate")) => returns 'Date Invalid'

startDate: $(this).data("startdate")


我不明白哪里出了问题以及如何解决。

最佳答案

问题是您正在使用

$(this).data("startdate")


在这种情况下,“ this”设置为文档,因此它将返回null / undefined。
您需要做的就是将其更改为此

$("#StartDate").data("startdate")


- - - - - - - - 编辑 - - - - - - - -

如果要在页面上使用一次但有多个日期选择器,则可以使用数据属性insead,因此从选项中删除startDate

$(".input-group.date input").datepicker({
    autoclose: true,
    todayBtn: "linked",
    clearBtn: true,
    todayHighlight: true,
    language: datepickerLang,
    format: "dd-mm-yyyy",
});


并在您的html中的datapickers上添加此属性

data-date-start-date="01-12-2016"

10-05 20:50
查看更多