daterangepicker插件使用问题:库未定义及日期格式异常
daterangepicker插件两类问题的解决方案
问题1:JSFiddle提示库未定义,本地环境正常运行
原因:JSFiddle未正确引入daterangepicker的依赖资源,本地环境已配置好所有依赖。
解决步骤:
- 在JSFiddle的「External Resources」面板中,依次添加以下依赖:
- jQuery(推荐3.x稳定版)
- daterangepicker的JS文件
- daterangepicker的CSS文件
- 确保依赖的CDN地址有效,加载顺序正确(jQuery必须在daterangepicker之前)
问题2:日期选择后显示异常,提交后日期错误
原因分析:
- 代码中
format: '#ucase(session.dateMaskFormat)#'是服务器端模板语法,若该变量未正确渲染为moment.js兼容的日期格式字符串,daterangepicker无法正确解析日期,导致显示和提交混乱。 - 若模板未解析直接输出该字符串,插件会使用默认格式或出现解析错误,引发日期错位(比如把月份和日期、年份搞混)。
- 后端接收时若未按照前端输出的日期格式解析,也会导致提交后日期变形。
解决方法:
- 先测试固定格式:将
format暂时硬编码为moment.js规范格式,比如format: 'DD/MM/YYYY'(日/月/年)或'MM/DD/YYYY'(月/日/年),验证插件是否能正常显示和提交日期。 - 排查服务器端变量:确认
session.dateMaskFormat的值是否符合moment格式规则(注意区分MM是两位月份,mm是分钟;DD是两位日期,d是一位日期),且模板已正确将其渲染为字符串(比如最终输出应为'DD/MM/YYYY'而非模板标签)。 - 检查依赖:确保项目中已正确引入moment.js(daterangepicker依赖moment处理日期解析)。
- 后端适配:若前端日期格式为日/月/年,后端需按照该格式解析日期字符串,避免将日当成月导致日期错误。
你的代码参考
$('.iDate').daterangepicker({ singleDatePicker: true, showDropdowns: true, locale: { format: '#ucase(session.dateMaskFormat)#', "separator": "/", daysOfWeek: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], firstDay: 1 } })
内容的提问来源于stack exchange,提问作者Nondo
相关产品推荐
相关产品推荐

