在 bootstrap 日期时间选择器上预设 date/time
Preset date/time on bootstrap datetimepicker
Fiddle: https://jsfiddle.net/ek9c9ojx/3/
我尝试了这个问题的许多解决方案:set default time in bootstrap-datetimepicker
但其中 none 有效。它们都会导致输入为空并默认为占位符文本。
我尝试了 setDate()
、setLocalDate()
和 defaultDate
路线,但我在当前文档中找不到任何支持这些路线的内容,也找不到任何可以实现这一简单的当前方法任务。
None 这些作品:
var dateObj = new Date('2016-03-21T23:31:00');
// does not work, causes empty input/placeholder text
$("#startdatetime-from").data('datetimepicker').setDate(dateObj);
// does not work, causes empty input/placeholder text
$("#startdatetime-from").data('datetimepicker').setLocalDate(dateObj);
var dateObj = new Date('2016-03-21T23:31:00');
$('#new-challenge-date-time-picker').datetimepicker({
minDate: moment(),
defaultDate: dateObj // does not work, same symptoms as above
});
我也尝试设置 #new-challenge-date-time-picker
本身的 value
属性,但这也不起作用。
有人知道答案吗?
您可以在初始化选择器时将日期传递给 "defaultDate"。但是 minDate 将覆盖 defaultDate。因此,如果您还需要 minDate,则将 useCurrent 设置为 false
https://eonasdan.github.io/bootstrap-datetimepicker/Options/#mindate
https://eonasdan.github.io/bootstrap-datetimepicker/Options/#usecurrent
试试下面的方法
$(function() {
var datePreset = $('#new-challenge-date-time-picker').attr('data-preset');
var dateParts = datePreset.split(' ');
var dateString = dateParts[0];
var dateTime = dateParts[1];
var dateTimeParts = dateTime.split(':');
var dateHour = dateTimeParts[0];
var dateMinutes = dateTimeParts[1];
var dateAMPM = dateParts[2];
var dateStringParts = dateString.split('/');
var dateMonth = dateStringParts[0];
var dateDay = dateStringParts[1];
var dateYear = dateStringParts[2];
var time = (dateAMPM == 'PM') ? (parseInt(dateHour) + 12) + ':' + dateMinutes : dateHour + ':' + dateMinutes;
time += ':00';
console.log(dateYear + '-' + dateMonth + '-' + dateDay + 'T' + time);
var dateObj = new Date(dateYear + '-' + dateMonth + '-' + dateDay + 'T' + time);
$('#new-challenge-date-time-picker').datetimepicker({
minDate: moment(),
defaultDate: dateObj,
useCurrent:false
});
// $("#new-challenge-date-time-picker").data('datetimepicker').setDate(dateObj);
});
您可以使用 defaultDate
选项初始化日期。如果您想使用 data-*
属性来初始化组件,您可以使用以下代码:
var datePreset = $('#new-challenge-date-time-picker input').attr('data-preset');
var dateFormat = $('#new-challenge-date-time-picker input').attr('data-format');
$('#new-challenge-date-time-picker').datetimepicker({
minDate: moment(),
defaultDate: moment(datePreset, dateFormat)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/d004434a5ff76e7b97c8b07c01f34ca69e635d97/src/js/bootstrap-datetimepicker.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/d004434a5ff76e7b97c8b07c01f34ca69e635d97/build/css/bootstrap-datetimepicker.css" rel="stylesheet">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div class="input-group date" id="new-challenge-date-time-picker">
<input type='text' class="form-control" data-format="MM/DD/YYYY HH:mm:ss A" data-preset="03/21/2016 11:31:00 PM"/>
<span class="input-group-addon">
<span class="glyphicon-calendar glyphicon"></span>
</span>
</div>
</div>
</div>
</div>
注意格式必须跟在时刻parsing rules之后。
由于这个未解决的错误,我删除了占位符:Default date not working.
Fiddle: https://jsfiddle.net/ek9c9ojx/3/
我尝试了这个问题的许多解决方案:set default time in bootstrap-datetimepicker
但其中 none 有效。它们都会导致输入为空并默认为占位符文本。
我尝试了 setDate()
、setLocalDate()
和 defaultDate
路线,但我在当前文档中找不到任何支持这些路线的内容,也找不到任何可以实现这一简单的当前方法任务。
None 这些作品:
var dateObj = new Date('2016-03-21T23:31:00');
// does not work, causes empty input/placeholder text
$("#startdatetime-from").data('datetimepicker').setDate(dateObj);
// does not work, causes empty input/placeholder text
$("#startdatetime-from").data('datetimepicker').setLocalDate(dateObj);
var dateObj = new Date('2016-03-21T23:31:00');
$('#new-challenge-date-time-picker').datetimepicker({
minDate: moment(),
defaultDate: dateObj // does not work, same symptoms as above
});
我也尝试设置 #new-challenge-date-time-picker
本身的 value
属性,但这也不起作用。
有人知道答案吗?
您可以在初始化选择器时将日期传递给 "defaultDate"。但是 minDate 将覆盖 defaultDate。因此,如果您还需要 minDate,则将 useCurrent 设置为 false
https://eonasdan.github.io/bootstrap-datetimepicker/Options/#mindate
https://eonasdan.github.io/bootstrap-datetimepicker/Options/#usecurrent
试试下面的方法
$(function() {
var datePreset = $('#new-challenge-date-time-picker').attr('data-preset');
var dateParts = datePreset.split(' ');
var dateString = dateParts[0];
var dateTime = dateParts[1];
var dateTimeParts = dateTime.split(':');
var dateHour = dateTimeParts[0];
var dateMinutes = dateTimeParts[1];
var dateAMPM = dateParts[2];
var dateStringParts = dateString.split('/');
var dateMonth = dateStringParts[0];
var dateDay = dateStringParts[1];
var dateYear = dateStringParts[2];
var time = (dateAMPM == 'PM') ? (parseInt(dateHour) + 12) + ':' + dateMinutes : dateHour + ':' + dateMinutes;
time += ':00';
console.log(dateYear + '-' + dateMonth + '-' + dateDay + 'T' + time);
var dateObj = new Date(dateYear + '-' + dateMonth + '-' + dateDay + 'T' + time);
$('#new-challenge-date-time-picker').datetimepicker({
minDate: moment(),
defaultDate: dateObj,
useCurrent:false
});
// $("#new-challenge-date-time-picker").data('datetimepicker').setDate(dateObj);
});
您可以使用 defaultDate
选项初始化日期。如果您想使用 data-*
属性来初始化组件,您可以使用以下代码:
var datePreset = $('#new-challenge-date-time-picker input').attr('data-preset');
var dateFormat = $('#new-challenge-date-time-picker input').attr('data-format');
$('#new-challenge-date-time-picker').datetimepicker({
minDate: moment(),
defaultDate: moment(datePreset, dateFormat)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/d004434a5ff76e7b97c8b07c01f34ca69e635d97/src/js/bootstrap-datetimepicker.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/d004434a5ff76e7b97c8b07c01f34ca69e635d97/build/css/bootstrap-datetimepicker.css" rel="stylesheet">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div class="input-group date" id="new-challenge-date-time-picker">
<input type='text' class="form-control" data-format="MM/DD/YYYY HH:mm:ss A" data-preset="03/21/2016 11:31:00 PM"/>
<span class="input-group-addon">
<span class="glyphicon-calendar glyphicon"></span>
</span>
</div>
</div>
</div>
</div>
注意格式必须跟在时刻parsing rules之后。 由于这个未解决的错误,我删除了占位符:Default date not working.