如何在使用Bootstrap Datepicker时获取所选日期值?

时间:2013-05-22 01:00:04

标签: jquery ruby-on-rails jquery-ui twitter-bootstrap datepicker

使用jquery和Bootstrap Datepicker,如何使用Bootstrap Datepicker获取我选择的新日期值? 仅供参考,我正在使用Rails 3和Coffescript。

我使用以下方式设置数据贴纸:

<input id="startdate" class="span2 datepicker" type="text" value="" name="startdate" default="2013-05-21" data-date="2013-05-21" data-behavior="datepicker">
<%= submit_tag 'Get Data using date', :id => 'get_data' %>

$(".datepicker").datepicker
      endDate: new Date
      format: "yyyy-mm-dd"
      autoclose: true
      minViewMode: 1
      todayBtn: "linked"

当用户点击旁边的“获取数据使用日期”按钮时,我将使用jQuery获取datepicker设置的新日期值,防止表单提交并使用该日期值运行ajax请求。除了获取正确的新日期值之外,所有ajax都运行良好。我尝试了以下两种情况并且它没有给我新的日期,它只返回我最初设置的默认值。

sd1 = $('#startdate').attr('value')
console.log sd1

sd2 = $('#startdate').attr('data-date'))
console.log sd2

我现在感觉非常愚蠢,但我无法找到如何获取引导日期选择器设置的新日期值。

13 个答案:

答案 0 :(得分:56)

对于bootstrap datepicker,您可以使用:

$("#inputWithDatePicer").data('datepicker').getFormattedDate('yyyy-mm-dd');

答案 1 :(得分:45)

你可以试试这个

$('#startdate').val()

$('#startdate').data('date')

答案 2 :(得分:28)

Bootstrap datepicker(bootstrap datepickcer搜索的第一个结果)有一个获取所选日期的方法。
http://bootstrap-datepicker.readthedocs.org/en/release/methods.html#getdate

GETDATE:
返回一个本地化的日期对象,表示选择中第一个日期选择器的内部日期对象 对于多日期选择器,返回选定的最新日期。

$('.datepicker').datepicker("getDate")

$('.datepicker').datepicker("getDate").valueOf() 

答案 3 :(得分:10)

一般来说,

$('#startdate').data('date') 

是最好的,因为

$('#startdate').val()
如果你有一个“inline”的日期选择器

不起作用

答案 4 :(得分:3)

这适用于内联datepicker(以及其他)

$('#startdate').data('datepicker').date

答案 5 :(得分:2)

如果已经突出显示了许多日期,并希望确定上次点击的日期,那么您需要以下内容:

$('#startdate').data('datepicker').viewDate

viewDate会返回一个JavaScript日期对象,因此您需要相应地处理它。

答案 6 :(得分:1)

请尝试使用HTML,例如:

var myDate = window.document.getElementById("startdate").value;

答案 7 :(得分:1)

如果您想以全文字符串格式表示日期,可以这样做:

$('#your-datepicker').data().datepicker.viewDate

答案 8 :(得分:1)

我能够使用以下内容找到所选日期的moment.js对象:

$('#datepicker').data('DateTimePicker').date()

有关moment.js以及如何使用moment.js对象设置日期格式的更多信息

答案 9 :(得分:0)

我尝试了上面的答案,但他们并没有为我做出努力;因此,正如user3475960所述,我使用$('#startdate').html()给了我html文本,所以我在必要时使用它... 也许有人会利用它..

答案 10 :(得分:0)

这里有很多解决方案,但可能是最好的解决方案。 检查您要使用的脚本的版本。

至少我可以为您提供100%有效的解决方案

  

版本:4.17.45

     

bootstrap-datetimejs   https://github.com/Eonasdan/bootstrap-datetimepicker版权(c)   2015乔纳森·彼得森

JavaScript

var startdate = $('#startdate').val(); 

输出看起来像: 12.09.2018 03:05

答案 11 :(得分:0)

$("#startdate").data().datepicker.getFormattedDate('yyyy-mm-dd');

答案 12 :(得分:0)

示例 here 提供了一个使用“getFormattedDate”的示例,但它没有说明如何将格式传递给此函数。它实际上很简单,它作为第二个参数,如下所示:

$('#date').datepicker('getFormattedDate', 'yyyy-mm-dd');

替代

$('#date').data('datepicker').getFormattedDate('yyyy-mm-dd');

$(this).data().datepicker.getFormattedDate('yyyy-mm-dd')

所有这些方法都没有记录。

但是有一种记录方法可以做到这一点:

here 有格式化功能,可以分别配置日期“toDisplay”和“toValue”

$('.bootstrap-datepicker-js').datepicker({
    format: {
        toDisplay: function (date, format, language) {
            var d = new Date(date).toLocaleDateString('en-GB', {
                day: 'numeric',
                month: 'short',
                year: 'numeric'
            }).split(' ').join('-');
            return d;
        },
        toValue: function (date, format, language) {
            var d = new Date(date).toLocaleDateString('en-GB', {
                day: 'numeric',
                month: 'short',
                year: 'numeric'
            }).split(' ').join('-');
            return d;
        }
    },
    minViewMode: 1,
    clearBtn: true,
    autoclose: true,
    enableOnReadonly: true
});

如果您像这样声明日期选择器,您的 $('#date').datepicker('getFormattedDate') 将根据您的喜好进行格式化