jQuery Datepicker未返回Date对象问题及日期提取方法咨询
解决jQuery Datepicker调用getMonth报错的问题
嘿,我帮你排查下这个报错的原因,以及怎么正确提取年月日:
报错原因
最可能的问题是选择器写错了:你写的$('datepicker')是在找<datepicker>这种自定义标签,但实际上你的日期选择器元素应该是带id或class属性的(比如常见的<input id="datepicker">)。如果没加选择器前缀(#对应id,.对应class),jQuery找不到正确的元素,调用datepicker('getDate')就会返回null或者undefined——这俩当然没有getMonth()方法,所以就报错啦。
另外还有一种可能:你的datepicker还没完成初始化,或者目标元素根本不存在,导致getDate()返回的不是合法的Date对象。
正确提取年月日的方法
先修正选择器,确保能正确选中初始化了datepicker的元素,然后按下面的步骤来:
// 假设你的日期选择器元素id是datepicker,用#选中它 var $picker = $('#datepicker'); // 先确认datepicker已经初始化 if ($picker.datepicker('instance')) { var selectedDate = $picker.datepicker('getDate'); // 先判断是不是合法的Date对象 if (selectedDate instanceof Date && !isNaN(selectedDate)) { var year = selectedDate.getFullYear(); // 获取四位数字的年份 var month = selectedDate.getMonth() + 1; // 注意:月份是0-11,要加1才是实际显示的月份 var day = selectedDate.getDate(); // 获取1-31的日期数字 // 这里就可以用year、month、day做你需要的操作啦 console.log(`选中的日期:${year}年${month}月${day}日`); } else { console.log("还没选中任何日期,或者返回的日期对象不合法"); } } else { console.log("datepicker还没初始化哦,先确保已经调用过$('#datepicker').datepicker()"); }
小提示
如果你是直接从输入框的value值来解析日期,可能会因为格式设置不同出问题,用getDate()返回Date对象的方式是最可靠的,毕竟它直接拿到了Datepicker内部维护的日期对象。
内容的提问来源于stack exchange,提问作者AlwaysThinkingDifferently
相关产品推荐
相关产品推荐

