datetime-local输入框赋值后不显示值的问题排查
问题原因及解决办法
问题出在两个关键点上:
- moment默认格式化格式不匹配要求:
moment(event.start).format()返回的是带时区偏移的ISO8601格式(比如2023-09-13T18:14:00+08:00),而datetime-local输入框的value仅接受不带时区的格式,必须是YYYY-MM-DDTHH:mm或YYYY-MM-DDTHH:mm:ss这类纯日期时间格式。 - 设置值的方式不够可靠:用
attr('value', ...)有时无法触发输入框的UI更新,改用jQuery的.val()方法能更稳妥地同步值与显示状态。
修正后的代码
// 按照数据库存储的格式,指定moment的格式化字符串 var g_start = moment(event.start).format('YYYY-MM-DDTHH:mm'); console.log(g_start); $('#edit_event_start_date').val(g_start);
如果数据库存储的是带秒的格式(比如2023-09-13T18:14:00),就把格式化字符串改成YYYY-MM-DDTHH:mm:ss,确保和数据库存储的格式完全一致。
另外,若event.start的格式存在解析风险,可以在moment中明确指定解析格式,避免解析错误:
var g_start = moment(event.start, 'YYYY-MM-DDTHH:mm').format('YYYY-MM-DDTHH:mm');
内容的提问来源于stack exchange,提问作者George Kapellakis
相关产品推荐
相关产品推荐

