使用Bootstrap 3 Datetimepicker v4 http://eonasdan.github.io/bootstrap-datetimepicker/以及Moment 2.9和其他所需文件。
当用户选择带有选择器的日期时,无论输入字段的值如何,我都需要触发更改事件。我有理由为输入设置一个空值,而是使用具有最大允许值的占位符。
<div class="row">
<div class="col-sm-6"><div class="form-group">
<div class="input-group date" id="dayjump">
<input type="text" class="form-control" value="" placeholder="24" name="dayportal" id="dayportal" />
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div></div>
</div>
我似乎遇到的问题是当输入没有值时无法选择maxDate。占位符的存在似乎在问题上没有区别。
$("#dayjump").datetimepicker({
useCurrent: false,
format: "D",
minDate: moment("2/7/2015","M/D/YYYY"),
maxDate: moment("02/24/2015","M/D/YYYY"),
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-arrow-up",
down: "fa fa-arrow-down",
previous: "fa fa-angle-left",
next: "fa fa-angle-right",
today: "fa fa-thumb-tack",
clear: "fa fa-trash"
}
});
$("#dayjump").on("dp.change",function (e) {
var y = moment(e.date).format("YYYY");
_m = moment(e.date).format("M");
_d = moment(e.date).format("D");
alert("year=" + y + " month=" + _m + " date=" + _d);
});
请点击此处https://jsfiddle.net/spasticdonkey/waoLzwz5/1/
您将在示例中注意到可以选择除maxDate之外的所有日期,并且尝试选择maxDate也不会更新输入字段。
答案 0 :(得分:3)
我想,这是错误。我在控制台发出警告:
弃用警告:时刻构建回落到日期。这是不鼓励的,将在即将发布的主要版本中删除。有关详细信息,请参阅https://github.com/moment/moment/issues/1407。
你可以用拐杖来解决这个问题:
maxDate: moment("02/25/2015","M/D/YYYY"),
disabledDates: [
"02/25/2015"
],
设置日期+1并禁用它。
答案 1 :(得分:1)
这对我有用:
maxDate: moment("02/24/2015 23:59:59","MM/DD/YYYY HH:mm:ss")
我们不需要像接受的答案那样明确提及和禁用日期
maxDate: moment("02/25/2015","M/D/YYYY")
disabledDates: [ "02/25/2015" ]
相反,我觉得这是个更好的解决方法。请找到js小提琴:jsfiddle.net/AbhinayKumarGunna/6jx723ep/57
答案 2 :(得分:0)
我解决此问题的方法是将maxDate
设置如下:
maxDate: new Date().setHours(23,59,59,999)
如果仅将maxDate设置为new Date()
,则将不允许选择今天的日期,因为在呈现页面时已过去了可选的最大日期。