datetimepicker默认值适配问题:新增显当前年,编辑显记录年
解决datetimepicker年份字段新增默认当前年、编辑显示记录年份的问题
问题场景
- 新增记录时,通过JS设置
date: moment().format("YYYY")能正常显示当前年,但编辑已有记录时,字段强制显示当前年而非记录中的年份 - 移除
date属性后,新增时字段为空(仅控件标记当前年),编辑时控件标记记录年份但字段无值
解决方案
核心思路是根据输入框的现有值动态初始化datetimepicker,避免硬编码默认值覆盖编辑场景的记录数据:
- 修改JS代码,去掉硬写的
date属性,改为判断输入框是否为空后再设置默认值:
// 初始化datetimepicker基础配置 $('#anno').datetimepicker({ format: 'YYYY', locale: 'es', }); // 新增场景:输入框为空时设置当前年为默认值 if ($('#anno').val().trim() === '') { $('#anno').datetimepicker('date', moment().format("YYYY")); }
- 确保Django表单正确渲染记录值
你的Django表单已正确配置anno字段的TextInput控件,编辑场景下Django会自动将记录中的年份值填充到输入框的value属性中,datetimepicker初始化时会自动读取该值并显示对应年份。
原理说明
- 原代码中硬设置
date属性会强制覆盖输入框的所有现有值,包括编辑时Django渲染的记录年份 - 改为动态判断输入框值后,仅在新增(输入框为空)时设置当前年,编辑时直接使用输入框已有的记录值初始化datetimepicker,同时保证字段值和控件显示一致
内容的提问来源于stack exchange,提问作者Julio Cesar Sori Gomez
相关产品推荐
相关产品推荐

