fengyuanchen/datepicker仅返回日值,需改为yyyy-mm-dd格式求助
解决fengyuanchen/datepicker获取完整yyyy-mm-dd日期的问题
我看你遇到的问题根源在于用了JavaScript原生的Date.getDate()方法——这个方法本来就只返回日期中的“日”部分(1-31),和组件本身无关~ 下面给你两种靠谱的解决办法:
方法1:利用组件自带的格式化能力
这个datepicker组件本身提供了format方法,可以直接把选中的Date对象转成你配置的yyyy-mm-dd格式,不用自己手动拼接:
jQuery('[data-toggle="datepicker"]').datepicker({ format: 'yyyy-mm-dd', pick: function(e) { // 调用组件的format方法格式化选中的日期 var formattedDate = jQuery(this).datepicker('format', e.date); jQuery(this).attr('value', formattedDate); } });
方法2:手动格式化Date对象
如果你不想依赖组件的内置方法,也可以自己处理Date对象,注意月份是从0开始计数(1月对应0),所以要加1,还要给个位数的月、日补零:
jQuery('[data-toggle="datepicker"]').datepicker({ format: 'yyyy-mm-dd', pick: function(e) { var date = e.date; // 获取四位年份 var year = date.getFullYear(); // 获取月份,加1后补零 var month = String(date.getMonth() + 1).padStart(2, '0'); // 获取日期,补零 var day = String(date.getDate()).padStart(2, '0'); // 拼接成目标格式 var formattedDate = `${year}-${month}-${day}`; jQuery(this).attr('value', formattedDate); } });
另外提个小细节:其实这个组件默认会自动把选中的日期填充到输入框里,如果你只是为了表单提交获取值,可能不需要手动设置value属性?不过如果你的场景确实需要手动处理,上面两种方法都能完美解决问题~
内容的提问来源于stack exchange,提问作者scopeak
相关产品推荐
相关产品推荐

