如何重新初始化引导日期选择器?

时间:2014-12-04 14:55:06

标签: javascript jquery twitter-bootstrap datepicker

引导日期选择器在加载时初始化。在加载页面并且datepicker已经初始化之后,如何更改该datepicker 的选项?

请点击此处查看示例http://jsfiddle.net/Leoqs1xg/

使用

将weekStart设置为4(星期四)
$('#mydate').datepicker({weekStart: 4});

但如果我用

将其更改为其他内容
$('#mydate').datepicker({weekStart: 1});

weekStart仍然是4。

4 个答案:

答案 0 :(得分:5)

现在有一种方法destroy

我会这样:

$('#sv_pickup_date').datepicker('destroy').datepicker({
    format: 'dd/mm/yyyy'
    , autoclose: true
    , startDate: '20/08/2018'
    , endDate: '24/08/2018'
});

(可选)您可能还希望使用clearDates方法。

像这样,您可以为启动日期选择器定义自己的reinitialize方法。

答案 1 :(得分:1)

我认为您需要删除并重新初始化对象

此处有更多信息

Bootstrap Datepicker re-initialize date format

答案 2 :(得分:1)

我在当前的项目中遇到了同样的障碍,我更改下拉列表并重新检查可用日期。所以为此我需要发送ajax新的启用日期。 @strapro走在正确的轨道上。

if (called_from_type_of_retreat == 'IGR') {
    var myMinDateToday = getTodaysDate();
    var enabledDatesArrayIGR = '';
    $('#arrival_date_div_IGR').datetimepicker();
    /*Ajax call for IGR*/
    $.ajax({
        type: "get",
        url: "getAjaxAvailableDatesIGR",
        data: {
        "todays_date": myMinDateToday
        },
        dataType: "json",
        success: function(data) {
            /*Assign array which is returned as Json*/
            enabledDatesArrayIGR = data.availableDatesArray;
            /* DateTime Pickers */
            $('#arrival_date_div_IGR').datetimepicker('destroy');
            $('#arrival_date_div_IGR').datetimepicker({
                format: "DD.MM.YYYY",
                ignoreReadonly: true,
                enabledDates: enabledDatesArrayIGR
            });
        },
        error: function(xhr, status, errorThrown) {
            console.log(xhr.responseText);
        }
    });
}

注意datetimepicker第4行的原始初始化。

然后在Ajax调用中我销毁datetimepicker的datetimepicker(第17行)并设置我的设置行(18-22)。

我的eonasdan bootstrap datetimepicker版本是:4.17.45

答案 3 :(得分:1)

没有重新初始化。但是,如果以编程方式更新输入的值,例如代码的另一部分,并且想要在打开选择器时看到更改,则可以使用setDate读取新值。

// var mynewdate = your-converted-to-date-string;
$('.datepicker').datepicker('setDate', mynewdate);