javascript - 实现密码切换功能

标签 javascript html css

<分区>


这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助 future 的读者。

关闭 3 年前

var pwd = document.getElementById('pwd');
var eye = document.getElementById('eye');
eye.addEventListener('click', togglePass);

function togglePass() {
  eye.classList.toggle('active');
  (pwd.type == 'password') ? pwd.type == 'text': pwd.type == 'password';
}
.fa {
  position: absolute;
  left: 350px;
  top: 10px;
  font-size: 25px;
  cursor: pointer;
  color: #999;
}

.fa.active {
  color: #0000FF;
}
<i class="fa fa-eye" id="eye"></i>
<input id="pwd" name="password" type="password" class="form-control" required autocomplete="off">

直到 classList 切换部分它正在工作 - 它把图标变成蓝色。但是,它不适用于将密码类型更改为文本的部分。

最佳答案

一旦 input 可靠地跨浏览器创建,您就不能更改它的 type更新: 这可能只是 IE8 及之前的问题。如果您不需要支持这些,只需确保在目标浏览器上进行测试即可。

相反,您必须创建一个新的 input,复制 value 和其他一些东西,然后替换原来的。

大致:

function togglePass(){
    var newpwd = document.createElement("input");
    newpwd.type = pwd.type == 'password' ? 'text': 'password';
    newpwd.value = pwd.value;
    newpwd.className = pwd.className;
    newpwd.id = pwd.id;
    newpwd.required = pwd.required;
    newpwd.autocomplete = pwd.autocomplete;
    pwd.parentNode.insertBefore(newpwd, pwd);
    pwd.parentNode.removeChild(pwd);
    pwd = newpwd;
    eye.classList.toggle('active');
}

var pwd = document.getElementById('pwd');
var eye = document.getElementById('eye');
eye.addEventListener('click', togglePass);

function togglePass(){
    var newpwd = document.createElement("input");
    newpwd.type = pwd.type == 'password' ? 'text': 'password';
    newpwd.value = pwd.value;
    newpwd.className = pwd.className;
    newpwd.id = pwd.id;
    newpwd.required = pwd.required;
    newpwd.autocomplete = pwd.autocomplete;
    pwd.parentNode.insertBefore(newpwd, pwd);
    pwd.parentNode.removeChild(pwd);
    pwd = newpwd;
    eye.classList.toggle('active');
}
.fa {
  position: absolute;
  left: 350px;
  top: 10px;
  font-size: 25px;
  cursor: pointer;
  color: #999;
}

.fa.active {
  color: #0000FF;
}
<i class="fa fa-eye" id="eye">eye</i>
<input id="pwd" name="password" type="password" class="form-control" required autocomplete="off">
<div>x</div>

关于javascript - 实现密码切换功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59721915/

上一篇:css - 最好的 CSS 生成器语言?

下一篇:html - 无法使用 CSS 定位将按钮定位在底部,而是在顶部

相关文章:

PHP-从选择框中获取没有值的数据

javascript - 嵌入数组的 MongoDB 平均值作为额外字段

javascript - 如何在页面更改时保持子菜单打开

javascript - 根据元素数量划分元素宽度

css - Angular 垫选择文本颜色不会改变

php - Laravel 上传到 cpanel css 问题

javascript - API 不是来自 AngularJS,但可以在浏览器上运行

javascript - Apache Cordova - 混合移动应用程序页面像 Chrome 浏览器一样打开,而不像 cordova 应用程序

javascript - 使图像映射的Click功能出现在特定的Div中

html - 表格单元格内绝对定位的伪元素不覆盖 IE9/10 中的父元素