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

如何使用sessionStorage保存表单提交状态,刷新后保持感谢信息禁止重复提交

实现方案

sessionStorage是浏览器自带的会话级存储,仅在当前浏览器标签页存活期间有效,关闭标签/浏览器后存储的数据会自动清空,完全匹配你需要的「关闭浏览器就允许重新提交」的需求,实现逻辑如下:


第一步:调整JS逻辑

你需要补充两个逻辑:提交时写入提交状态标记、页面加载时主动检查状态:

// 页面加载完成后立即检查是否已经提交过表单
window.addEventListener('load', function() {
  const isFormSubmitted = sessionStorage.getItem('formSubmitted');
  if (isFormSubmitted === 'true') {
    // 已经提交过,直接隐藏表单、显示感谢语
    document.getElementById('form').style.display = 'none';
    document.getElementById('thanks').style.display = 'block';
  }
})

function change() {
  document.getElementById('form').style.display ='none';
  document.getElementById('thanks').style.display = 'block';
  // 提交成功后写入提交标记到sessionStorage
  sessionStorage.setItem('formSubmitted', 'true');
}

第二步:修复现有HTML的问题

你当前代码里两个按钮都用了相同的id="button",ID属性在页面中必须唯一,建议修改避免潜在样式、交互异常:

<button type="submit"  id="submit-btn" onclick="change()">Send</button>
<input type="reset" id="reset-btn">
</form>
</div>
<h1 id="thanks" style="display:none">Thanks for submit the form!</h1>

注意事项

如果你的表单是默认同步提交(提交后会触发页面刷新/跳转),确保提交后返回的页面也加载了上述的状态检查逻辑,刷新后状态才会正常生效。如果需要手动重置提交状态,调用sessionStorage.removeItem('formSubmitted')即可清除标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:10