javascript - 实现密码切换功能
问题描述
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
它工作的切换部分 - 它将图标变为蓝色。但是,它不适用于将密码类型更改为文本的部分。
解决方案
一旦它被可靠地跨浏览器创建type
,您就无法更改它。更新:这可能只是一个 IE8 和之前的问题。如果您不需要支持这些,只需确保在目标浏览器上进行测试。input
相反,您必须创建一个新的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>
推荐阅读
- postgresql - 如何仅针对表而不针对触发器和函数执行 pg_dump?
- c++ - C++ 创建一个输入流操纵器来屏蔽输出但保持所有输入不变
- html - 如何使用 jquery 获取 html 选择 > 选项标签自定义属性值?
- python - 删除 Pandas Dataframe 中的非等效多索引行
- docker - Boto3 超时连接到本地 dynamodb 但可以卷曲
- c# - 如何以不同方式设置 Blazor 组件的样式
- php - 为什么我的脚本可以工作,但它在控制台中显示语法错误?
- html - 将按钮添加到 CSS 图像?
- vue.js - 如何使用Vuetifyjs更改日历中过去事件的颜色
- c# - 使用 Angular 和 .net core api 设置 DocuSign 电子签名