阻止引导程序日期时间选取器在选择时间上下按钮时关闭
Prevent bootstrap Datetime Picker close on select time up and down button
我已经尝试过dp.change在日期和时间的更改事件中隐藏日期时间选择器,但它不应该在时间上下按钮时关闭。
我正确地使用了日期时间选取器所需的每个库。我学习了https://eonasdan.github.io/bootstrap-datetimepicker/但对我没有任何帮助。
这是我的HTML代码:
<div class="col-md-4 col-xs-12 center-block">
<div class="col-md-12 col-sm-12">
<div class="col-md-8 col-md-offset-2 col-sm-12"> Date ( YYYY-MM-DD )</div>
</div>
<!-- <div class="col-md-12 col-xs-12 col-sm-12 no-padding">
<label>Start Date</label>
</div>
-->
<div class="col-md-12 col-xs-12 col-sm-12">
<label class="col-md-2 col-xs-12 text-center noPadding"><b>From:</b></label>
<div class='input-group date col-md-10 col-md-offset-1 col-xs-12' id='startDate'>
<input type='text' class="form-control " placeholder="Start Date" id="startDateInput"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<!-- <div class="col-md-12 col-xs-12 col-sm-12 no-padding">
<label>End Date</label>
</div> -->
<div class="col-md-12 col-xs-12 col-sm-12">
<label class="col-md-2 col-xs-12 text-center noPadding"><b>To:</b></label>
<div class="input-group date col-md-10 col-md-offset-1 col-xs-12" id='endDate' >
<input type='text' class="form-control" placeholder="End Date" id="endDateInput" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
这是日期时间选择器的初始化
$('#startDate').datetimepicker({
format: 'YYYY-MM-DD HH:mm:ss',
collapse:false,
sideBySide:true,
useCurrent:false,
showClose:true,
});
$('#endDate').datetimepicker({
format: 'YYYY-MM-DD HH:mm:ss',
collapse:false,
sideBySide:true,
useCurrent:false,
showClose:true,
});
这是隐藏日期时间选择器的事件
$("#startDate").on("dp.change", function (e) {
$('#startDate , #endDate').data("DateTimePicker").hide();
});
$("#endDate").on("dp.change", function (e) {
$('#endDate').data("DateTimePicker").hide();
});
现在我的问题是日期时间选择器不应该接近时间选择器上下按钮。我试图从被解雇的地方得到这一点,但这也没有给我任何东西。
这是任何希望为解决方案更新的地方
现在我的问题是日期时间选择器不应该接近时间选择器上下按钮。
要做到这一点,你需要处理这些按钮,这样它们就可以从dp.change事件中被忽略:
$(function () {
$('#startDate').datetimepicker({
format: 'YYYY-MM-DD HH:mm:ss',
collapse:false,
sideBySide:true,
useCurrent:false,
showClose:true
});
$('#endDate').datetimepicker({
format: 'YYYY-MM-DD HH:mm:ss',
collapse:false,
sideBySide:true,
useCurrent:false,
showClose:true
});
$("#startDate, #endDate").on("dp.show", function (e) {
$('table.table-condensed a.btn').on('click', function(e) {
e.stopImmediatePropagation();
var selector = 'seconds';
var op = '+';
switch ($(this).attr('data-action')) {
case "incrementSeconds":
break;
case "incrementMinutes":
selector = 'minutes';
break;
case "incrementHours":
selector = 'hours';
break;
case "decrementHours":
op = '-';
selector = 'hours';
break;
case "decrementMinutes":
op = '-';
selector = 'minutes';
break;
case "decrementSeconds":
op = '-';
selector = 'seconds';
break;
}
var cachedEle = $(this).closest('table.table-condensed').find('span[data-time-component="' + selector + '"]');
var resultValue = ((op == '+') ? +cachedEle.text() + 1 : (+cachedEle.text() == 0) ? 59 : +cachedEle.text() - 1) % 60;
cachedEle.text( (resultValue < 10) ? '0' + resultValue : resultValue );
var originalTargetId = $(this).closest('#startDate, #endDate').attr('id');
var seconds = $(this).closest('table.table-condensed').find('span[data-time-component="seconds"]').text();
var minutes = $(this).closest('table.table-condensed').find('span[data-time-component="minutes"]').text();
var hours = $(this).closest('table.table-condensed').find('span[data-time-component="hours"]').text();
$('#' + originalTargetId).attr('changedHHMMSS', hours + ':' + minutes + ':' + seconds);
$('#' + originalTargetId).trigger("dp.change", {'originalTargetId': originalTargetId, 'hours': hours, 'minutes': minutes, 'seconds': seconds})
});
});
$("#startDate, #endDate").on("dp.hide", function (e) {
$('table.table-condensed a.btn').off('click');
});
$("#startDate, #endDate").on("dp.change", function (e, originalTargetId) {
if (originalTargetId === undefined) {
var changedHHMMSS = $(this).attr('changedHHMMSS');
$(this).removeAttr('changedHHMMSS');
if (changedHHMMSS !== undefined) {
var inputVal = $(this).children('input').val();
$(this).children('input').val(inputVal.substring(0, inputVal.length - changedHHMMSS.length) + changedHHMMSS);
}
$(this).data("DateTimePicker").hide();
} else {
if (originalTargetId instanceof Object && 'originalTargetId' in originalTargetId) {
console.log('Discard events coming from hh:mm:ss: ' + originalTargetId.originalTargetId);
}
}
});
});
<link rel="stylesheet" href="https://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/d004434a5ff76e7b97c8b07c01f34ca69e635d97/build/css/bootstrap-datetimepicker.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.0.4/js/bootstrap-transition.js"></script>
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.0.4/js/bootstrap-collapse.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>
<div class="col-md-4 col-xs-12 center-block">
<div class="col-md-12 col-sm-12 reportCriteriaHead">
<div class="reportCriteriaTitle col-md-8 col-md-offset-2 col-sm-12"> Date ( YYYY-MM-DD )</div>
</div>
<!-- <div class="col-md-12 col-xs-12 col-sm-12 no-padding">
<label>Start Date</label>
</div>
-->
<div class="col-md-12 col-xs-12 col-sm-12">
<label class="col-md-2 col-xs-12 text-center noPadding linehgt"><b>From:</b></label>
<div class='input-group date col-md-10 col-md-offset-1 col-xs-12 selectSumary ' id='startDate'>
<input type='text' class="form-control " placeholder="Start Date" id="startDateInput"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<!-- <div class="col-md-12 col-xs-12 col-sm-12 no-padding">
<label>End Date</label>
</div> -->
<div class="col-md-12 col-xs-12 col-sm-12">
<label class="col-md-2 col-xs-12 text-center noPadding linehgt"><b>To:</b></label>
<div class="input-group date col-md-10 col-md-offset-1 col-xs-12 selectSumary " id='endDate' >
<input type='text' class="form-control" placeholder="End Date" id="endDateInput" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
相关文章:
- 如何禁用引导程序时间选择器中的按钮
- 当点击今天按钮时,Bootstrap Date Time Picker未选择当前时间
- 按时间启用HTML按钮
- 根据服务器时间禁用启用单选按钮
- Javascript按钮禁用并启用特定时间
- 一段时间后自动点击提交按钮
- 尝试使用jquery设置鼠标按下的时间来更改按钮触发器以控制音量滑块
- 如何使用java脚本代码计算禁用按钮的时间
- 使用setTimeout为按钮添加冷却时间
- 当当前时间距数据库中设置的时间不到一小时时,如何禁用按钮
- 只显示潜水时悬停按钮X时间-可以'我不能使它正常工作
- 在javascript中每隔一段时间自动更改按钮的背景
- 通过带有jQuery的按钮跳到HTML5视频中的特定时间
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 离子按钮点击,持续时间长
- 每次用户点击按钮时,将“时间”存储在Firebase中
- 将两个函数绑定到一个按钮,具体取决于按钮的按下时间长短
- JavaScript:通过单击按钮来捕获系统时间的代码
- Javascript - 记录用户在整个访问过程中按下给定按钮的时间
- 如何使用javascript记录两次按钮按下之间的响应时间(以秒为单位)