用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);