如何动态设置bootstrap-datepicker的日期值?


76

我正在使用bootstrap datepicker以及一行highchart。

我希望图表缩放时更新日期选择器日期。一旦该事件触发,我就会更新datepicker的值。这些值可以很好地更新,但是当单击日历时,弹出日历上的日期仍然是旧日期。

这是我的日期选择器:

<div class="input-append date pull-right" id="dpStartDate" data-date="@DateTime.Now.AddMonths(-1).ToString("dd/MM/yyyy")" data-date-format="dd/mm/yyyy">
    <input class="span2" id="startDateText" size="16" type="text" value="@DateTime.Now.AddMonths(-1).ToString("dd/MM/yyyy")" readonly="">
    <span class="add-on"><i class="icon-th"></i></span>
</div>

我尝试使用此代码更新值:

$('#dpStartDate').attr('data-date', startDate);
$('#startDateText').attr('value', startDate);

可以很好地更新日期,但不设置日历。

我还尝试触发onChange事件,该事件还会更新日期,但不会更新日历:

$('#dpStartDate').trigger('changeDate', startDate);

$('#dpStartDate').datepicker()
    .on('show', function (ev) {
        ev.stopPropagation();
    })
    .on('changeDate', function (ev, date) {
        var startDate = new Date();
        if (date != undefined) {
            startDate = date;
            $('#dpStartDate').attr('data-date', startDate);
            $('#startDateText').attr('value', startDate);
        }
        else {
            startDate = ev.date;
            $('#dpStartDate').attr(startDate.getDate() + '/' + (startDate.getMonth() + 1) + '/' + startDate.getFullYear());
            $('#startDateText').attr(startDate.getDate() + '/' + (startDate.getMonth() + 1) + '/' + startDate.getFullYear());
        }
        $('#dpStartDate').datepicker('hide');
        ev.stopPropagation();
    });

有谁知道是否有可能像这样更新日历?

谢谢

Answers:


72

这对我有用

$(".datepicker").datepicker("update", new Date());

5
此方法有效,但是如果您在上声明了格式,则会破坏格式html。就像,如果format是"dd.mm.yyyy",则在更新时像这样datetimeformat的结果"mm/dd/yyyy"。有解决方法吗?
哈维丹

1
@Javidan我还没有测试过,但是也许您可以传递一下js日期,然后指定格式。
pusle '16

1
注意datepicker!= datetimepicker
烛台

@Javidan如果您使用data-date-format =“ dd / mm / yyyy”,则格式不会中断,例如<input type ='text'name =“ myDateCtrl” data-date-format =“ dd / mm / yyyy “ placeholder =” Select date“ />
Panayiotis Hiripis '18

39
var startDate = new Date();

$('#dpStartDate').data({date: startDate}).datepicker('update').children("input").val(startDate);

其他方式

$('#dpStartDate').data({date: '2012-08-08'});
$('#dpStartDate').datepicker('update');
$('#dpStartDate').datepicker().children('input').val('2012-08-08');
  1. 将日历日期设置为属性数据日期
  2. 需要更新)
  3. 设置输入值(记住输入是datepicker的子级)。

这样,您将日期设置为“ 2012-08-08”


3
您可以在代码段中添加一些说明吗?:)
asteri 2012年

3
日期选择器为什么不侦听文本输入中的更改,而这样做本身呢?
drogon 2013年

4
...并且该代码不起作用,该代码有效$('#dpStartDate')。datepicker('update','2012-08-08');
drogon

如何设置更新后的日期格式?例如Val我设置为"2012-08-12 06:05:04",我想在更新后设置格式为"12/08/2012 06:05:04"吗?有可能吗?我的代码:$('#start').datepicker("setValue", "2014-08-08 6:05:04" ); $("$start").datepicker("update"); $("#start").datetimepicker({format: 'dd/mm/yyyy hh:ii', language: 'fr', autoclose: true, todayBtn: true});
阿什温·帕尔玛

设置日期值后,当我单击日期选择器输入时,它将为我显示正确的日期和月份,但年份从“ 1989”开始。不知道为什么
阿什温·帕玛

27
$("#datepicker").datepicker("setDate", new Date);

1
不仅仅是Jquery吗?它也可以与Bootstrap datepicker一起使用吗?
艾伦(Erlan)

11

更好地使用:

$("#datepicker").datepicker("setDate", new Date); 

代替

$("#datepicker").datepicker("update", new Date);

如果使用更新,则不会触发事件changeDate。


10

试试这个代码,

$(".endDate").datepicker({
    format: 'dd/mm/yyyy',
    autoclose: true
}).datepicker("update", "10/10/2016"); 

这将更新日期并应用格式dd/mm/yyyy


9

这对我有用

$('#datepicker').datepicker("setValue", '01/10/2014' );
$('#datepicker').datepicker("setValue", new Date(2008,9,03));

是的,这就是我!我不确定为什么日期格式不起作用,但是格式化日期可以通过设置UI值并在日历弹出窗口中预先选择日期来工作。日期对象无法为自己设置日历弹出窗口。
蒂莫西·冈萨雷斯

4

我必须执行“ setValue”和“ update”以使其完全工作

$('#datepicker').datepicker('setValue', '2014-01-29').datepicker('update');

2
我已经从控制台尝试过了。它不起作用。$('#start')。datepicker('setValue','2014-01-29')。datepicker('update');
阿什温·帕玛

您正在使用哪个版本的Bootstrap @AshwinParmar?我正在使用Bootstrap v4。
SomethingOn

3

那确实有效。

简单,

容易明白,

设置和更新对我有用的插件的单一方法。

$(".datepicker").datepicker("update", new Date());

其他更新方式

$('.datepicker').data({date: '2015-01-01'});
$('.datepicker').datepicker('update');

不要忘记update手动拨打电话。


10
这与@Imran的答案完全一样,您没有在答案之前的5个月内向已存在的答案添加任何内容。
2014年

1
没问题,不需要为此道歉。发生这种情况时,您可以随时对已经存在的答案进行投票。但是您的答案是正确的,这只是+ Imran的一份“副本”,我只想指出这一点
Michel Ayres 2014年

3
这个答案不应该被删除吗?
eirikir 2015年

3

对于Bootstrap 4

如果在Bootstrap中使用输入组,则需要将新日期附加到文本框的父级,否则,如果单击日历图标并单击外部,则日期将被清除。

<div class="input-group date" id="my-date-component">
   <input type="text" />
    <div class="input-group-append">
      <span class="input-group-text"><i class="fa fa-calendar"></i></span>
    </div>
</div>

您需要将日期设置为input-group.date

$('#my-date-component').datepicker("update", new Date("01/10/2014"));

还要检查datepicker更新方法


3

使用其他答案的方法时,配置的选项会丢失,要更正它,您可以使用全局配置:

$('.datepicker').datepicker();
$.fn.datepicker.defaults.format = 'dd/mm/yyyy';
$.fn.datepicker.defaults.startDate = "0";
$.fn.datepicker.defaults.language = "es";
$.fn.datepicker.defaults.autoclose = true;
$.fn.datepicker.defaults.todayHighlight = true;
$.fn.datepicker.defaults.todayBtn = true;
$.fn.datepicker.defaults.weekStart = 1;

现在,您可以使用更新方法而不会丢失选项:

$(".datepicker").datepicker("update", new Date("30/11/2018"));

3

使用代码:

var startDate = "2019-03-12"; //Date Format YYYY-MM-DD

$('#datepicker').val(startDate).datepicker("update");

说明:

Datepicker(输入字段)选择器#datepicker。

更新输入字段。

使用选项更新调用日期选择器。


2

对于datetimepickers,请为我使用这项工作

$('#lastdate1').data({date: '2016-07-05'});
$('#lastdate1').datetimepicker('update');
$('#lastdate1').datetimepicker().children('input').val('2016-07-05');

这里唯一对我有用的答案(v1.6.4)。谢谢!
geraldo

2

请注意,如果以自定义格式启动日期选择器,则可以将简单字符串date作为第二个参数传递。这样可以节省几行。

$('.selector').datepicker({
    format:'dd/mm/yyyy',
});

$('.selector').datepicker('update', '13/09/2019');

1

这样简单的方法(一行)

$('#startDateText').val(startDate).datepicker("update");

尽管此代码可以回答问题,但提供有关此代码为何和/或如何回答问题的其他上下文,可以改善其长期价值。
rollstuhlfahrer

1

这对我有用:

$('#dpStartDate').data("date", startDate);

1

$('#DateDepenseInput').val("2020-12-28")
格式应类似于年月日
,对我来说效果很好...



0

您可以使用以下简单方法:

qsFromDate = '2017-05-10';
$("#dtMinDate").datepicker("setDate", new Date(qsFromDate));
$('#dtMinDate').datepicker('update');

0

如果您使用的是Bootstrap DatePicker版本4+

注意可通过数据属性访问所有函数,例如$('#datetimepicker')。data(“ DateTimePicker”)。FUNCTION()

要设置日期值,您的代码应类似于

$("#datetimepicker").data("DateTimePicker").date(new Date());

0

@Imran答案适用于文本框

若要将datepicker应用于div,请使用以下命令:

$('#div_id').attr("data-date", '1 January 2017');
$('#div_id').datepicker("update");

逗号分隔的多个日期:

$('#div_id').attr("data-date", '1 January 2017,2 January 2017,3 January 2017');

0
$('#datetimepicker1').data("DateTimePicker").date('01/11/2016 10:23 AM')


0

尝试

$("#datepicker").datepicker('setDate','25-05-2020').datepicker('fill');

setDate不更新浏览器上的日期选择器文本字段值时,这对我有用。“额外的.datepicker('fill');”会重新填充引导程序,datepicker以获取由setDate方法设置的新日期。


0

在页面加载中,如果您不希望触发我没有执行的changeDate事件

$('#calendarDatePicker').data("date", new Date());
$('#calendarDatePicker').datapicker();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.