从外部更新bootstrap-datepicker

时间:2014-06-06 09:35:07

标签: javascript jquery angularjs twitter-bootstrap

我在多选+内联模式中使用Bootstrap-datepicker,我需要从外部更新一些预选日期。我做了一些研究,但似乎没有任何效果。请记住,我在angularJS上下文中,而datepicker在angular指令中。我到目前为止所做的事情:

1

element.data('datepicker').dates = myDatesArray;

这设置了日期,但是发生了一些奇怪的事情,当日历呈现时,我设置的所有日期都显示时间偏移为-3小时(请记住,我不需要日期对象的时间部分)。我尝试在每个日期之前做一些类似.addHours(3,0,0,0)的事情,然后将它提供给控件,甚至更奇怪的事情发生了:日期按预期设置,但事情发生了(显然我不明白为什么)和控件禁用它们。因此,同时选择和禁用日期,这是废话,因为用户不能再取消选择它们。

2

我找到了一个问题并尝试了一些东西,比如:

$('.datepicker').datepicker('setDate', new Date('2014-06-12')); $('.datepicker').datepicker('setValue', '2014-06-19').datepicker('update'); $('.datepicker').datepicker('update', '2014-06-29');

其中每一个都会导致日期选择器再次渲染。如果我在循环中有这些内容来遍历我的数组中的所有日期,那么我将拥有与所选日期一样多的日历。

第3

我还试图在控件中创建一个方法,比如它的beforeShowDay,但是它也没有用,因为控件使用的内部数组并没有暴露在那里时间,所以我得到了一些错误。

如果需要,我可以添加角度指令,但我不认为它过于相关。

PS:我不知道那么多jQuery,我觉得我脸上露出了一些非常明显的东西,因为我看到很多人声称第二种方法(所有这些方法实际上都适用于他们。任何帮助都将受到高度赞赏。

好的,按照要求我创建了一个JSFiddle。这是:fiddle

2 个答案:

答案 0 :(得分:0)

您可以设置作为日期/时间选择器来源的输入值,然后调用

$(sourceelement).val(newvalue);
$(sourceelement).datepicker('update');

答案 1 :(得分:0)

好的,所以我已经弄明白了。我还不知道为什么,但在做$('.datepicker').datepicker('setDate', new Date('2014-06-12'));时控制权重复了。但是为此,我做了类似的事情: element.datepicker({/*init stuff here*/}).datepicker('setDate', date);这可以正常工作,它设置数组应该如此,如果我想取消选择它应该工作的东西。这也适用于日期数组。这是工作fiddle