You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sessionStorage存储读取并自动回填date类型日期输入框内容

问题根因
  • 缺少存储触发逻辑:现有代码没有给表单绑定提交事件,用户点击提交按钮时没有执行storeBooking方法,sessionStorage内从未写入过日期值,自然读取不到内容回填
  • date类型输入框有格式要求:<input type="date">的value属性仅支持YYYY-MM-DD格式的字符串,只要赋值格式不符合就会失效,显示默认占位符
修复后的完整实现

HTML 代码

<form id="birthForm">
  <label for="start">Date of birth:</label>
  <input type="date" id="start" required="required" name="date of birth" value="2021-10-04" />
  <input type="submit" value="Apply">
</form>

JS 代码

// 存储日期到sessionStorage
function storeBooking(start) {
  sessionStorage.setItem('start', start);
}

// 页面加载完成后回填
function prefillcard() {
  const savedStart = sessionStorage.getItem('start');
  // 只有存在存储值时才赋值
  if (savedStart) {
    document.getElementById("start").value = savedStart;
  }
}

// 页面加载完成执行回填
window.addEventListener("DOMContentLoaded", prefillcard);

// 绑定表单提交事件,提交前先存储日期
document.getElementById('birthForm').addEventListener('submit', function() {
  const startVal = document.getElementById('start').value;
  storeBooking(startVal);
});
实现说明
  • date输入框自身的value属性返回值本身就是YYYY-MM-DD标准格式,直接存储即可,不需要额外做格式转换
  • 用sessionStorage.setItem/getItem读写值比直接挂载属性更规范,可避免读写异常
  • 提交表单时先执行存储逻辑,再走默认的表单提交/跳转逻辑,保证跳转后仍能读取到存储的日期值

内容的提问来源于stack exchange,提问作者snailleaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:09:05