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

如何利用sessionStorage让输入框保持禁用状态,刷新后不恢复?

解决方案

修改后的完整代码

HTML 代码

<input id="firstname"></input>
<input id="lastname"></input>
<input id="email"></input>

<button type="button" class="dropdown-item" id="status">Disable</button>

JavaScript 代码

// 获取所有需要控制的输入框和按钮
const inputs = document.querySelectorAll('#firstname, #lastname, #email');
const toggleBtn = document.getElementById('status');

// 页面加载时恢复状态
function restoreState() {
  // 从sessionStorage读取状态,默认未禁用(false)
  const isDisabled = sessionStorage.getItem('disableInputs') === 'true';
  
  // 设置输入框的禁用状态
  inputs.forEach(input => input.disabled = isDisabled);
  // 设置按钮文字
  toggleBtn.textContent = isDisabled ? 'Enable' : 'Disable';
}

// 切换输入框状态的函数
function toggleInputStatus() {
  // 获取当前状态并反转
  const currentDisabled = sessionStorage.getItem('disableInputs') === 'true';
  const newDisabled = !currentDisabled;
  
  // 更新sessionStorage
  sessionStorage.setItem('disableInputs', newDisabled.toString());
  
  // 更新输入框和按钮状态
  inputs.forEach(input => input.disabled = newDisabled);
  toggleBtn.textContent = newDisabled ? 'Enable' : 'Disable';
}

// 页面加载时恢复状态
restoreState();
// 绑定按钮点击事件
toggleBtn.addEventListener('click', toggleInputStatus);

关键修改点说明

  • 按钮文字修正:原来的代码错误使用elem.value获取按钮文字,改为textContent,这才是按钮实际显示的文本内容。
  • 状态切换逻辑:新增状态反转逻辑,点击按钮时会根据当前状态切换启用/禁用,而不是只固定设置为禁用。
  • 页面加载时的状态恢复:单独编写restoreState函数,在页面加载时读取sessionStorage存储的状态,同步设置输入框禁用状态和按钮文字,确保刷新后状态保留。
  • 优化元素获取:用querySelectorAll一次性获取所有需要控制的输入框,简化代码结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:05:21