如何阻止Ruby on Rails中Bootstrap Datepicker默认选中今日日期?
解决Bootstrap Datepicker默认选中今日日期的问题
嘿,我来帮你搞定这个问题!你遇到的核心问题是Bootstrap Datepicker默认会自动选中当前日期,而你代码里的setDate配置其实是无效的——因为setDate是Datepicker的实例方法,不是初始化时的配置项,所以它根本没起作用,Datepicker还是沿用了默认行为。
下面给你几种可行的解决方案,你可以根据需求选择:
方案一:直接禁用默认选中日期
通过初始化配置里的defaultDate项,设置为null或空字符串,就能阻止Datepicker自动选中今日:
<script type="text/javascript"> $(".datepicker").attr('readOnly', 'true').css("background-color","white"); $(document).ready(function(){ $('.datepicker').datepicker({ defaultDate: null, // 关键:不设置任何默认选中日期 yearRange : '-70:-19', dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, autoclose: true }); }); </script>
方案二:设置特定默认日期(如果需要)
如果你原本想设置一个特定的默认日期(比如1970年之前的某个日期),要用defaultDate配置项,并且确保这个日期在你的yearRange范围内:
比如设置默认日期为1954年1月1日(符合-70:-19的范围,假设当前年份是2024):
<script type="text/javascript"> $(".datepicker").attr('readOnly', 'true').css("background-color","white"); $(document).ready(function(){ $('.datepicker').datepicker({ defaultDate: new Date(1954, 0, 1), // 注意:月份从0开始,0代表1月 yearRange : '-70:-19', dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, autoclose: true }); }); </script>
你也可以用符合dateFormat格式的字符串来设置:
defaultDate: "01/01/1954"
方案三:强制清空选中状态(兜底方案)
如果上面的配置还是没生效,你可以在Datepicker初始化完成后,调用clearDates()方法强制清空选中的日期:
<script type="text/javascript"> $(".datepicker").attr('readOnly', 'true').css("background-color","white"); $(document).ready(function(){ $('.datepicker').datepicker({ yearRange : '-70:-19', dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, autoclose: true }).datepicker('clearDates'); // 初始化后清空选中状态 }); </script>
关键提醒
你之前代码里的"setDate": new Date(-70)是无效的,因为setDate不是初始化配置项,而是需要在Datepicker实例创建后调用的方法,正确用法是:
$('.datepicker').datepicker('setDate', new Date(-70));
但这个方法是用来动态设置日期的,不是初始化时的默认值配置,所以之前的写法不会生效~
内容的提问来源于stack exchange,提问作者M Ahmed
相关产品推荐
相关产品推荐

