我有一个函数,用于在发生某些事件时更新Bootstrap datetimepicker的格式。我第一次单击datetimepicker,它将利用新格式呈现选择器。例如,如果我将格式设置为YYYY
,则仅显示年份。但是,如果我关闭日期选择器并再次将其打开,则它将呈现完整的日历。我是在做错什么,还是datetimepicker的错误?
function updateInterval(interval) {
$('#interval').val(interval);
if (interval === 'LAST24') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/DD/YYYY HH:mm:ss');
} else if (interval === 'HOURLY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/DD/YYYY');
} else if (interval === 'DAILY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/DD/YYYY');
} else if (interval === 'WEEKLY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/YYYY');
} else if (interval === 'MONTHLY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('YYYY');
}
}
根据文档,它看起来非常简单,因此不确定我做错了什么。
最佳答案
您的代码很好,它是Eonasdan的bootstrap-datetimepicker最新版本的known bug。您可以尝试按照github链接中的建议在组件代码中设置currentViewMode = 0;
,或使用旧版本,例如4.17.37
,如以下工作片段所示:
var jq182 = $;
function updateInterval(interval) {
$('#interval').val(interval);
if (interval === 'LAST24') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/DD/YYYY HH:mm:ss');
} else if (interval === 'HOURLY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/DD/YYYY');
} else if (interval === 'DAILY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/DD/YYYY');
} else if (interval === 'WEEKLY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('MM/YYYY');
} else if (interval === 'MONTHLY') {
jq182('#endDatePicker').datetimepicker().data('DateTimePicker').format('YYYY');
}
}
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>
<div class="input-group date" id="endDatePicker">
<input type="text" class="form-control" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<button type="button" class="btn btn-default" onclick="updateInterval('LAST24')">LAST24</button>
<button type="button" class="btn btn-default" onclick="updateInterval('HOURLY')">HOURLY</button>
<button type="button" class="btn btn-default" onclick="updateInterval('DAILY')">DAILY</button>
<button type="button" class="btn btn-default" onclick="updateInterval('WEEKLY')">WEEKLY</button>
<button type="button" class="btn btn-default" onclick="updateInterval('MONTHLY')">MONTHLY</button>
<input type="text" id="interval" class="form-control" readonly>
出现相同问题的Here和here人。
关于javascript - Bootstrap DateTimePicker动态更改格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41121852/