H5 中 input type="password" 怎么实现密码明文与密文的动态切换

轻涛君_6718

轻涛君_6718

2026-10-07

780人浏览

原创

h5页面中密码框明文/密文切换需动态修改input的type属性为"text"或"password",配合按钮图标(如?️/?)和aria-label提示,并直接赋值type而非setattribute以确保兼容性。

h5 中 input type=\

在 H5 页面中,实现密码输入框的“明文/密文”动态切换,核心是控制 input 的 type 属性在 "password" 和 "text" 之间切换,并配合一个可视化的切换按钮(如眼睛图标)。

1. 基础 HTML 结构

需要一个 input 元素和一个触发切换的按钮(常用 i 或 button):

<div class="password-field">
  <input type="password" id="pwdInput" placeholder="请输入密码"><button type="button" id="togglePwd">?️</button>
</div>

2. 使用 JavaScript 动态切换 type

监听按钮点击,修改 input 的 type 属性,并同步更新按钮提示文案或图标状态:

Teleport tsh SSH (Identity-First SSH Access, no passwords/static keys)
Teleport tsh SSH (Identity-First SSH Access, no passwords/static keys)

使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。

下载
  • 获取 input 元素和按钮元素
  • 判断当前 type 是 "password" 还是 "text"
  • 切换 type,并更新按钮的 innerText / aria-label / class 等以反映当前状态
  • 可选:聚焦到 input,提升操作连续性
const pwdInput = document.getElementById('pwdInput');
const toggleBtn = document.getElementById('togglePwd');

toggleBtn.addEventListener('click', () => {
  const isPassword = pwdInput.type === 'password';
  pwdInput.type = isPassword ? 'text' : 'password';
  pwdInput.focus(); // 保持光标活跃
  toggleBtn.textContent = isPassword ? '?' : '?️';
});

3. 注意兼容性与体验细节

虽然现代浏览器都支持运行时修改 input[type],但仍需注意:

  • 不要在 iOS Safari 中依赖 type="search" 或其他非常规类型来回切换,仅限 "password" ↔ "text"
  • 避免使用 input.setAttribute('type', ...),应直接赋值 input.type = ...,更可靠
  • 建议添加 aria-label(如 “显示密码” / “隐藏密码”),提升无障碍访问体验
  • 图标建议用 SVG 或字体图标替代 emoji,便于样式控制和适配暗色模式

4. 可选:封装为可复用函数

若页面有多个密码框,可封装通用逻辑:

function initPasswordToggle(inputId, btnId) {
  const input = document.getElementById(inputId);
  const btn = document.getElementById(btnId);
  if (!input || !btn) return;

  btn.addEventListener('click', () => {
    const isPwd = input.type === 'password';
    input.type = isPwd ? 'text' : 'password';
    input.focus();
    btn.setAttribute('aria-label', isPwd ? '隐藏密码' : '显示密码');
  });
}

// 调用
initPasswordToggle('pwdInput', 'togglePwd');

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2303

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4983

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6070

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5578

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

783

5

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

2023.10.23

3831

6

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

2024.03.06

6488

6

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

2025.12.30

774

19

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

2025.12.30

674

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 219人学习