javascript 如何使事件单击仅影响您正在单击的图标

fivyi3re  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(122)

Link to the form here我有一个具有显示/隐藏密码功能的表单,现在我希望在重复密码输入上有相同的功能,在两个都有一个眼睛打开/关闭的图标。问题是,当我点击密码时,显示(并打开眼睛)也发生在重复密码图标上。
是不是影响功能,这已经工作,因为是不是相同的功能,但即时通讯无法使它只对图标,你点击,因为它有相同的名称,我不能改变它。
我试图更改图标的名称,但这些图标不能命名为不同的(他们上传到一个库,如果你改变名称,它dissapear)。
我的代码是:

  1. `function revealPass() {
  2. document.getElementById("password").setAttribute("type", "text");
  3. $(".icon-ojo-abierto").removeClass("d-none");
  4. $(".icon-ojo-cerrado").addClass("d-none");
  5. }
  6. function hidePass() {
  7. document.getElementById("password").setAttribute("type", "password");
  8. $(".icon-ojo-cerrado").removeClass("d-none");
  9. $(".icon-ojo-abierto").addClass("d-none");
  10. }
  11. function revealPass2() {
  12. document.getElementById("passwordConfirmation").setAttribute("type", "text");
  13. $(".icon-ojo-abierto").removeClass("d-none");
  14. $(".icon-ojo-cerrado").addClass("d-none");
  15. }
  16. function hidePass2() {
  17. document.getElementById("passwordConfirmation").setAttribute("type", "password");
  18. $(".icon-ojo-cerrado").removeClass("d-none");
  19. $(".icon-ojo-abierto").addClass("d-none");
  20. }`
oknwwptz

oknwwptz1#

这将选择类为“icon-ojo-abierto”的 all 元素,即使您只需要某个输入字段旁边的图标:

  1. $(".icon-ojo-abierto").removeClass("d-none");

你没有发布你的HTML,所以我们只能猜测它的结构,但假设它看起来像这样......

  1. <form>
  2. <div class="row">
  3. <input id="password" type="password" />
  4. <span class="icon-ojo-abierto"></span>
  5. <span class="icon-ojo-cerrado d-none"></span>
  6. </div>
  7. <div class="row">
  8. <input id="passwordConfirmation" type="password" />
  9. <span class="icon-ojo-abierto"></span>
  10. <span class="icon-ojo-cerrado d-none"></span>
  11. </div>
  12. </form>

...您应该能够选择相关的图标,如下所示:

  1. function revealPass() {
  2. document.getElementById("password").setAttribute("type", "text");
  3. const iconAbierto = document.querySelector('#password ~ .icon-ojo-abierto');
  4. iconAbierto.classList.remove('d-none');
  5. const iconCerrado = document.querySelector('#password ~ .icon-ojo-cerrado');
  6. iconCerrado.classList.add('d-none');
  7. }

这里的关键是使用一个选择器,它只匹配你需要的元素。在我的例子中,我使用了一般的兄弟组合子,只选择.icon-ojo-abierto,如果有一个#password作为它的兄弟。

展开查看全部

相关问题