带有显示/隐藏按钮的多个密码字段

Smu*_*n82 0 html jquery

我有几个密码输入,但是想分别通过一个图标(按钮)来切换密码可见性。但是,以下内容将它们全部切换,并将图标仅放置在第一个图标上。

这是一个小提琴:https : //jsfiddle.net/bu6ysgsj/

  
    $(function() {
        $('.password-group').find('.password-box').each(function(index, input) {
            var $input = $(input);
            $('.password-visibility').click(function() {
                var change = "";
                if ($(this).find('i').hasClass('fa-eye')) {
                    $(this).find('i').removeClass('fa-eye')
                    $(this).find('i').addClass('fa-eye-slash')
                    change = "text";
                } else {
                    $(this).find('i').removeClass('fa-eye-slash')
                    $(this).find('i').addClass('fa-eye')
                    change = "password";
                }
                var rep = $("<input type='" + change + "' />")
                    .attr('id', $input.attr('id'))
                    .attr('name', $input.attr('name'))
                    .attr('class', $input.attr('class'))
                    .val($input.val())
                    .insertBefore($input);
                $input.remove();
                $input = rep;
            }).insertAfter($input);
        });
    });
Run Code Online (Sandbox Code Playgroud)
.password-group {
    position: relative;
    width: 300px;
}

.password-group > input {
    width: 100%;
}

.password-visibility {
    position: absolute;
    right: 8px;
    top: 2px;
}
   
Run Code Online (Sandbox Code Playgroud)
<div class="password-group">
    <input type="password" class="form-control password-box" aria-label="password" value="wdocechoiwceh98">
    <a href="#!" class="password-visibility"><i class="fa fa-eye"></i></a>
</div>
<div class="password-group">
    <input type="password" class="form-control password-box" aria-label="password" value="wdocechoiwceh98">
    <a href="#!" class="password-visibility"><i class="fa fa-eye"></i></a>
</div>
<div class="password-group">
    <input type="password" class="form-control password-box" aria-label="password" value="wdocechoiwceh98">
    <a href="#!" class="password-visibility"><i class="fa fa-eye"></i></a>
</div>
<div class="password-group">
    <input type="password" class="form-control password-box" aria-label="password" value="wdocechoiwceh98">
    <a href="#!" class="password-visibility"><i class="fa fa-eye"></i></a>
</div>
     
Run Code Online (Sandbox Code Playgroud)

Mig*_*ota 5

您单击处理程序选择器的范围太广。

更改

$('.password-visibility').click(function() { ... })
Run Code Online (Sandbox Code Playgroud)

至

$input.parent().find('.password-visibility').click(function() { ... })
Run Code Online (Sandbox Code Playgroud)

JSFiddle演示:https ://jsfiddle.net/bu6ysgsj/1/