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

点击输入框图标切换密码可见性:仅首个输入框生效问题

解决密码可见性切换仅对第一个输入框生效的问题

问题描述

点击密码输入框旁的图标时,仅第一个密码框的可见状态会切换;点击第二个确认密码框旁的图标,仍然只会修改第一个密码框的状态,无法操作第二个输入框。

问题原因

当前jQuery代码硬编码了第一个密码框的类选择器.dhe-form-control-user_password,无论点击哪个.dhe-form-add-on图标,都会选中这个固定的输入框进行修改,没有关联到当前点击图标对应的目标输入框。

解决方案

修改jQuery代码,利用this关键字定位当前点击的图标,再通过DOM结构关系找到对应的密码输入框,替代固定的类选择器。

修改后的代码:

jQuery(document).ready(function(){
  $('.dhe-form-add-on').on('click', function(){
    // 获取当前点击图标对应的前一个密码输入框
    const $targetInput = $(this).prev('.dhe-form-control');
    // 切换输入框的类型
    if($targetInput.attr('type') === 'password'){
      $targetInput.attr('type','text');
      // 切换图标为解锁样式
      $(this).find('i').removeClass('fa-lock').addClass('fa-unlock');
    }else{
      $targetInput.attr('type','password');
      // 切换图标为锁定样式
      $(this).find('i').removeClass('fa-unlock').addClass('fa-lock');
    }
  })
})

代码解释

  1. $(this).prev('.dhe-form-control'):通过this获取当前点击的图标元素,再用prev()方法找到它前面紧邻的密码输入框,确保每个图标只操作自己对应的输入框。
  2. 图标状态同步:增加了图标类名的切换,从fa-lock变为fa-unlock,让用户直观感知当前密码的可见状态,提升交互体验。
  3. 通用选择器适配:使用.dhe-form-control通用类匹配所有密码输入框,避免依赖特定自定义类,代码兼容性更强。

额外适配说明

如果后续DOM结构调整(比如图标和输入框不在同一层级),可以调整选择器逻辑,例如用$(this).closest('.form-group').find('.dhe-form-control')查找父容器内的输入框,确保功能正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:54:37