Bootstrap datepicker手动设置日期不起作用

时间:2017-09-01 18:37:57

标签: twitter-bootstrap twitter-bootstrap-3 bootstrap-datepicker

我有一个遗留的Web应用程序正在使用一些旧版本的bootstrap datepicker。我在这里上传了整个datepicker.js文件。 https://pastebin.com/aYzMrWgW

我正在设置我的“开始日期”选择器,以便在更改时,我获取所选值并计算所选同月的最后一天,并将该值设置为“结束日期”的值。

我正在使用以下代码从“开始日期”选择器$('#dp1')中获取值,并尝试将其设置为“结束日期”选择器$('#dp1a')的值。当我检查控制台时,我的lastDay变量是正确的。如果我选择8/1/2017 - 它会记录8/31/2017和儿子的字符串表示。但是我无法用正确的值更新结束日期。

$('#dp1').datepicker().on('changeDate', function(ev) {
  $('.datePickerStart').change();
});

$('.datePickerStart').change(function() {
  // Parse the date and get the last day of the month selected
  var date = new Date($(this).val());
  var lastDay = new Date(date.getFullYear(), date.getMonth() + 2, 0);
  console.log(lastDay);


  $('#dp1a').datepicker('setValue', lastDay);
});

如果我像上面那样调用setValue,它会将值设置为9/1/2017。

有人能指出我做错了吗?

1 个答案:

答案 0 :(得分:1)

你的bootstrap datepicker版本太旧了,似乎没有完整的方法.datepicker('setValue', value)。与当前版本相比,缺少一些代码。你可以检查差异here。 即使我使用你的版本在你的代码中对setValue进行了一些更改。

$(document).ready(function(){
var second = $('#dp1a').datepicker().data('datepicker');
$('#dp1').datepicker().on('changeDate', function(ev) {
  $('.datePickerStart').change();
});

$('.datePickerStart').change(function() {
  // Parse the date and get the last day of the month selected
  var date = new Date($(this).val());
  var lastDay = new Date(date.getFullYear(), date.getMonth() + 2, 0);
  console.log(lastDay);
  second.date=lastDay;
    second.setValue();
});
});

old version fiddle

但是当使用当前版本更新时,您的代码非常完美。使用最新版本更容易使用这些方法。

current version fiddle

希望这有帮助!