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

为何HTML密码框点击显示/隐藏按钮后页面刷新内容清空?

密码显示/隐藏按钮导致页面刷新的问题解决

你碰到的这个问题其实很常见——那个「Show/Hide」按钮放在<form>标签里,浏览器默认会把没有指定type属性的按钮识别为type="submit",点击它就会触发表单提交,页面一刷新,输入的密码自然就消失了。下面给你几种简单的解决办法:

方法一:给按钮指定type="button"

这是最直接的解决方案,只要修改按钮的HTML代码,明确告诉浏览器这是一个普通按钮,不是提交按钮:

<button type="button" onclick="changePwdView()"> Show/Hide </button>

这样点击按钮时只会执行changePwdView()函数,不会触发表单提交和页面刷新。

方法二:在JS函数中阻止默认事件

如果你不想修改太多HTML,可以在JavaScript的切换函数里添加阻止默认行为的代码:
首先修改HTML的按钮,把事件对象传进去:

<button onclick="changePwdView(event)"> Show/Hide </button>

然后更新你的JS函数:

let loginPwdStatus = false; 
function changePwdView(e){
  e.preventDefault(); // 关键:阻止表单提交的默认行为
  let getLoginInput = document.getElementById("loginPwdChange");
  if(loginPwdStatus === false){
    getLoginInput.setAttribute("type", "text");
    loginPwdStatus = true;
  }else if(loginPwdStatus === true){
    getLoginInput.setAttribute("type", "password");
    loginPwdStatus = false;
  }
}

方法三:使用事件监听(更推荐的现代写法)

这种方式可以把HTML和JavaScript代码解耦,代码结构更清晰:
先修改HTML,去掉内联的onclick,给按钮加一个ID:

<button id="togglePwdBtn"> Show/Hide </button>

然后更新你的JS代码:

let loginPwdStatus = false;
// 获取元素
const toggleBtn = document.getElementById('togglePwdBtn');
const loginInput = document.getElementById('loginPwdChange');

// 绑定点击事件
toggleBtn.addEventListener('click', function(e){
  e.preventDefault();
  // 简化状态切换逻辑
  loginPwdStatus = !loginPwdStatus;
  // 根据状态设置输入框类型
  loginInput.setAttribute('type', loginPwdStatus ? 'text' : 'password');
});

以上三种方法都能解决页面刷新的问题,你可以根据自己的代码习惯选择其中一种。测试一下,修改后点击「Show/Hide」按钮就只会切换密码的显示状态,输入的密码也能保留下来了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:50:55