根据输入值设置 jQuery 日期范围选择器的日期
Set dates for jQuery Date Range Picker from input values
https://github.com/longbill/jquery-date-range-picker
我的一切都运行良好,但我似乎无法让选择器使用我在 .有两个输入,开始日期和结束日期。我有一个 value="",两者都有一个日期,这应该是日期选择器的默认日期。然后用户可以更改这些日期。
我尝试过一些不同的想法,但我无法获得任何东西来获取输入的值属性。任何见解将不胜感激。
这是我的代码:
<div class="datepicker-to-from">
<input type="date" id="startTimestamp" class="date-picker" value="11/18/2012 05:45 AM">
<input type="date" id="endTimestamp" class="date-picker" value="04/09/2014 5:00 PM">
</div>
$('.datepicker-to-from').dateRangePicker({
format: 'MM/DD/YYYY HH:mm A',
showShortcuts: false,
time: {
enabled: true
},
getValue: function(){
$('#startTimestamp').val() + ' to ' + $('#endTimestamp').val();
},
setValue: function(){
$('#startTimestamp').val();
$('#endTimestamp').val();
},
startDate: $('#startTimestamp').val()
});
2015 年 4 月 10 日更新:
在andybeli和The F的帮助下,我解决了这个问题。对于那些 运行 遇到类似情况的人来说,最终的 JS 代码看起来像这样。
$('.datepicker-to-from').dateRangePicker({
format: 'MM/DD/YYYY HH:mm A',
showShortcuts: false,
time: {
enabled: true
},
setValue: function(s,s1,s2){
$('#startTimestamp').val(s1);
$('#endTimestamp').val(s2);
},
});
var startDate = $('#startTimestamp').val();
var endDate = $('#endTimestamp').val();
$('.datepicker-to-from').data('dateRangePicker').setDateRange(startDate,endDate);
该插件需要一个实际的日期对象才能运行。幸运的是,您的 value="" 字符串足以使用 new Date()
:
创建此类对象
<div class="datepicker-to-from">
<input type="date" id="startTimestamp" class="date-picker" value="11/18/2012 05:45">
<input type="date" id="endTimestamp" class="date-picker" value="04/09/2014 5:00">
</div>
$(function(){
$('.datepicker-to-from').dateRangePicker({
format: 'MM/DD/YYYY HH:mm',
showShortcuts: false,
time: {
enabled: true
}
});
// get values and create Date objects
var date1 = new Date($('#startTimestamp').val());
var date2 = new Date($('#endTimestamp').val());
// set the values
$('#startTimestamp).val(fancy_date(date1));
$('#endTimestamp').val(fancy_date(date2))
// formatting
function addZero(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
function fancy_date(dateObj) {
return addZero(dateObj.getMonth()) +
'/' + addZero(dateObj.getDate()) +
'/' + addZero(dateObj.getFullYear()) +
' ' + addZero(dateObj.getHours()) +
':' + addZero(dateObj.getMinutes());
}
});
如果您确实需要显示 AM/PM,请选中此 answer。适应这个应该不难。
标准的 setter 和 getter 以及 $(dom).setDate()
可能会很麻烦,因为您要处理两个输入字段,它们无论如何都包含您想要的值。
我从 w3 js 中偷走了 addZero 函数,你查看 Dates 了解更多信息。
在 Daterangepicker 中,我们必须在 startDate 和 endDate 参数中传递值。
$('#daterange').daterangepicker({ startDate: '03/05/2005', endDate: '03/06/2005' });
注意:这里我们必须以 "m/d/Y" 格式传递日期,因为这是默认类型,除非您没有在语言环境数组中指定格式。
locale: {
format: 'M/DD hh:mm A'
}
如果使用多个输入
var fromDate = new Date();
$('input[id="dates-available-from"]').daterangepicker({
singleDatePicker: true,
showDropdowns: true,
autoApply:true,
locale: {
format: 'YYYY-MM-DD'
},
minDate:new Date()
},
function(start, end, label) {
fromDate = start.format('YYYY-MM-DD');
$('input[id="dates-available-to"]').daterangepicker({
singleDatePicker: true,
showDropdowns: true,
autoApply:true,
locale: {
format: 'YYYY-MM-DD'
},
minDate:fromDate
});
});
https://github.com/longbill/jquery-date-range-picker
我的一切都运行良好,但我似乎无法让选择器使用我在 .有两个输入,开始日期和结束日期。我有一个 value="",两者都有一个日期,这应该是日期选择器的默认日期。然后用户可以更改这些日期。
我尝试过一些不同的想法,但我无法获得任何东西来获取输入的值属性。任何见解将不胜感激。
这是我的代码:
<div class="datepicker-to-from">
<input type="date" id="startTimestamp" class="date-picker" value="11/18/2012 05:45 AM">
<input type="date" id="endTimestamp" class="date-picker" value="04/09/2014 5:00 PM">
</div>
$('.datepicker-to-from').dateRangePicker({
format: 'MM/DD/YYYY HH:mm A',
showShortcuts: false,
time: {
enabled: true
},
getValue: function(){
$('#startTimestamp').val() + ' to ' + $('#endTimestamp').val();
},
setValue: function(){
$('#startTimestamp').val();
$('#endTimestamp').val();
},
startDate: $('#startTimestamp').val()
});
2015 年 4 月 10 日更新: 在andybeli和The F的帮助下,我解决了这个问题。对于那些 运行 遇到类似情况的人来说,最终的 JS 代码看起来像这样。
$('.datepicker-to-from').dateRangePicker({
format: 'MM/DD/YYYY HH:mm A',
showShortcuts: false,
time: {
enabled: true
},
setValue: function(s,s1,s2){
$('#startTimestamp').val(s1);
$('#endTimestamp').val(s2);
},
});
var startDate = $('#startTimestamp').val();
var endDate = $('#endTimestamp').val();
$('.datepicker-to-from').data('dateRangePicker').setDateRange(startDate,endDate);
该插件需要一个实际的日期对象才能运行。幸运的是,您的 value="" 字符串足以使用 new Date()
:
<div class="datepicker-to-from">
<input type="date" id="startTimestamp" class="date-picker" value="11/18/2012 05:45">
<input type="date" id="endTimestamp" class="date-picker" value="04/09/2014 5:00">
</div>
$(function(){
$('.datepicker-to-from').dateRangePicker({
format: 'MM/DD/YYYY HH:mm',
showShortcuts: false,
time: {
enabled: true
}
});
// get values and create Date objects
var date1 = new Date($('#startTimestamp').val());
var date2 = new Date($('#endTimestamp').val());
// set the values
$('#startTimestamp).val(fancy_date(date1));
$('#endTimestamp').val(fancy_date(date2))
// formatting
function addZero(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
function fancy_date(dateObj) {
return addZero(dateObj.getMonth()) +
'/' + addZero(dateObj.getDate()) +
'/' + addZero(dateObj.getFullYear()) +
' ' + addZero(dateObj.getHours()) +
':' + addZero(dateObj.getMinutes());
}
});
如果您确实需要显示 AM/PM,请选中此 answer。适应这个应该不难。
标准的 setter 和 getter 以及 $(dom).setDate()
可能会很麻烦,因为您要处理两个输入字段,它们无论如何都包含您想要的值。
我从 w3 js 中偷走了 addZero 函数,你查看 Dates 了解更多信息。
在 Daterangepicker 中,我们必须在 startDate 和 endDate 参数中传递值。
$('#daterange').daterangepicker({ startDate: '03/05/2005', endDate: '03/06/2005' });
注意:这里我们必须以 "m/d/Y" 格式传递日期,因为这是默认类型,除非您没有在语言环境数组中指定格式。
locale: {
format: 'M/DD hh:mm A'
}
如果使用多个输入
var fromDate = new Date();
$('input[id="dates-available-from"]').daterangepicker({
singleDatePicker: true,
showDropdowns: true,
autoApply:true,
locale: {
format: 'YYYY-MM-DD'
},
minDate:new Date()
},
function(start, end, label) {
fromDate = start.format('YYYY-MM-DD');
$('input[id="dates-available-to"]').daterangepicker({
singleDatePicker: true,
showDropdowns: true,
autoApply:true,
locale: {
format: 'YYYY-MM-DD'
},
minDate:fromDate
});
});