用datetimepicker之前最好先看看自己用的是哪个datetimepicker,免得出现下面这种悲剧
http://stackoverflow.com/questions/22500662/bootstrap-3-datetimepicker-events-not-firing-up
在于我来说,就没分清startdate和mindate,enddate和maxdate
最新的已经是后者
使用例
http://eonasdan.github.io/bootstrap-datetimepicker/
<script type="text/javascript"> $(function () { $('#datetimepicker6').datetimepicker(); $('#datetimepicker7').datetimepicker({ useCurrent: false //Important! See issue #1075 }); $("#datetimepicker6").on("dp.change", function (e) { $('#datetimepicker7').data("DateTimePicker").minDate(e.date); }); $("#datetimepicker7").on("dp.change", function (e) { $('#datetimepicker6').data("DateTimePicker").maxDate(e.date); }); }); </script>
这次卡在了useCurrent上,因为如果不写这条设置,在设置datetimepicker7的minDate的时候,会将datetimepicker7的值从空白更新成now,触发第2个方法的change,然后会给datetimepicker6设置maxdate为now,导致datetimepicker6无法选择now以后的日期,类似于死循环
插件源码如下
if (options.useCurrent && !options.keepInvalid && date.isBefore(minDate)) { setValue(options.minDate); }
所以,demo里也给出了解决方法,设置useCurrent为false
$('#datetimepicker7').datetimepicker({ useCurrent: false //Important! See issue #1075 });
或者
$('#datetimepicker7').data("DateTimePicker").useCurrent(false);