我正在将Tempus Dominus Timepicker v5.0.1与jquery 3.4.1和最新版的moment.js一起使用。我有一个表格,其中包含注册开始日期和时间以及注册结束日期和时间。我希望用户能够选择日期,并在他们单击日期后希望时间自动显示(等同于单击底部的“时钟”按钮)。
我有看法:
<div class="form-row">
<div class="col-md-4 col-lg-3 mb-3">
@Html.LabelFor(m => m.RegistrationStartDate, new { @class = "font-weight-bold label-required" })
@Html.TextBoxFor(m => m.RegistrationStartDate, new { @class = "form-control datetimepicker-input", placeholder = RecruitClassResource.RegistrationStartDate, required = "required", id="datetimepicker1", data_toggle="datetimepicker", data_target="#datetimepicker1" })
@Html.ValidationMessageFor(m => m.RegistrationStartDate)
</div>
</div>
<div class="form-row">
<div class="col-md-4 col-lg-3 mb-3">
@Html.LabelFor(m => m.RegistrationEndDate, new { @class = "font-weight-bold label-required" })
@Html.TextBoxFor(m => m.RegistrationEndDate, new { @class = "form-control datetimepicker-input", placeholder = RecruitClassResource.RegistrationEndDate, required = "required", id="datetimepicker2", data_toggle="datetimepicker", data_target="#datetimepicker2" })
@Html.ValidationMessageFor(m => m.RegistrationEndDate)
</div>
</div>
javascript:
@section Scripts {
@Scripts.Render("~/Scripts/moment.min.js")
@Scripts.Render("~/Scripts/tempusdominus-bootstrap-4.js")
<script>
$(document).ready(function () {
$('.datetimepicker-input').datetimepicker({
icons: {
time: "far fa-clock"
}
});
$('.datetimepicker-input').on('change.datetimepicker', function (e) {
// Just a test to see when this event is fired
alert(e.date);
});
});
</script>
}
我以为change.datetimepicker可能是我一直在寻找的事件侦听器,但是第一次单击文本框时将其触发,因为该值从null更改为当前日期。我也不确定在选择日期后需要什么时间才能显示时间。
答案 0 :(得分:0)
我的朋友-> https://jsfiddle.net/8ta5j6v7/2/。我为您准备了一个JSFiddle,可以满足您的要求。
代码如下:
<div class="container" style="padding: 80px;">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker1" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1" />
<div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
</div>
</div>
$(function() {
$("#datetimepicker1").datetimepicker();
var $picker = $("#datetimepicker1");
$picker.on("change.datetimepicker", function (e) {
// After the date is selected, I would like to switch to time view automatically / programmatically
if (!e.oldDate && $picker.datetimepicker('useCurrent')) {
// First time ever. If useCurrent option is set to true (default), do nothing
// because the first date is selected automatically.
return;
}
else if (
e.oldDate &&
e.date &&
(e.oldDate.format('YYYY-MM-DD') === e.date.format('YYYY-MM-DD'))
) {
// Date didn't change (time did).
return;
}
setTimeout(function () {
$('#datetimepicker1 [data-action="togglePicker"]').click();
}, 300); // With a mini delay so that the animation doesn't fire right-away.
});
});