bootsrap datepicker无法在show事件中选择endDate

时间:2016-08-19 21:25:53

标签: jquery twitter-bootstrap datepicker

请注意,这与datetimepicker.js插件不同,后者具有相似的名称和similar problem

在自定义datepicker行为时,我看到了一个错误?如果我设置了结束日期,我无法突出显示按下输入按钮将选择今天的日期。

功能上它很好,但在视觉上它是错误的。点击进入,更改焦点,然后回到控件确实有效,但在我的情况下这还不够好。

HTML:

<input id="bs_date" type="text" data-provide="datepicker" data-date-autoclose="true" />

使用Javascript:

var today = new Date();
$("[data-provide='datepicker']").datepicker("setEndDate", 
    new Date(today.getFullYear(), 
        today.getMonth(), 
        today.getDate())
);

$("[data-provide='datepicker']").on("show", function(e) {
    var isFirstShow = $(this).data("isFirstShow");
    console.log("is not first");

    if(isFirstShow === undefined) {
        console.log("is indeed first");

        $(this).data("isFirstShow", "yes");
        $(this).datepicker('setDate', new Date());
        $(this).datepicker('update');
        $(this).removeAttr('placeholder');
        $(this).val("");
    }
});

此代码的要点是允许一个空白的初始输入字段,在用户第一次点击它时自动选择(但不提交)今天的日期。

有人会认为这两行代码可以完成这项工作。他们做,除非你有一个endDate设置,此时没有骰子:

$(this).datepicker('setDate', new Date());
$(this).datepicker('update');

它不应该是这样的:

so wrong

应该看起来像这样:

so right

花费数小时努力解决这个问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

fwiw,这似乎有效。

var today = new Date();
$("[data-provide='datepicker']").on("show", function(e) {
    var isFirstShow = $(this).data("isFirstShow");
    console.log("is not first");

    if(isFirstShow === undefined) {
        console.log("is indeed first");

        $(this).data("isFirstShow", "yes");
        $(this).datepicker('setDate', new Date());
        $("[data-provide='datepicker']").datepicker("setEndDate", 
                    new Date(today.getFullYear(), 
                today.getMonth(), 
                today.getDate())
        );
        $(this).datepicker('update');
        $(this).removeAttr('placeholder');
        $(this).val("");
    }
});