html 解决 input type="password" 标签自动记住账号密码

本文介绍了一种使用JavaScript监听输入框的变化,并将实际输入的密码替换为显示符号的方法,同时保持了密码的真实输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要实现逻辑,把input type="password"  改成 type="text"  
隐藏input密码,把真实密码存到input标签的一个属性中实现,下面的逻辑,每次input框中内容变化,获取真实密码逻辑如下
ps:复制一段字符串,选择一段或者直接把光标放到●的中间粘贴都可以。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        window.onload = function () {
            document.getElementById("password").addEventListener('input', function () {
                var _this = this;
                var newPassword = _this.value;
                var oldPassword = _this.getAttribute("password");
                var deta = newPassword.length-oldPassword.length;

                var truePassword = "";
                var p = _this.selectionEnd;//光标结束时的位置

                for(var i=0; i<newPassword.length; i++){
                    var c = newPassword.charAt(i);
                    if(i<p && c!='●'){
                        truePassword += c;
                    }else if(i<p && c=='●'){
                        truePassword +=  oldPassword.charAt(i);
                    }else {
                        truePassword += oldPassword.substr(oldPassword.length-newPassword.length+p,newPassword.length-p);
                        break;
                    }

                }
                newPassword = truePassword.replace(/\S/g, '●');

                _this.setAttribute('password', truePassword);
                _this.value = newPassword;
		// 解决在win8中光标总是到input框的最后	
                _this.selectionEnd = p;
                _this.selectionStart = p;

                //console.log(truePassword);
            },false);
        }
    </script>
</head>
<body>
    <input id="password" type="text"  placeholder="密码"  password="" >

</body>
</html>

演示效果如下:



jQuery绑定input事件:
$(selector).on('input', function () {
});
js改变input的value的时候,要把真实密码属性一起改了。

如有问题请回复我,谢谢!



                
<think>好的,我现在需要解决用户在Element UI中input框禁止浏览器自动填充的问题。用户提到使用auto-complete="new-password",但可能还有一些细节需要注意。首先,我应该回顾一下用户提供的引用内容,看看有哪些解决方案已经被提出。 引用[1]和[3]都提到在typepassword的el-input上添加auto-complete="new-password"属性,这似乎是一个直接的解决方法。引用[2]和[4]则讨论了非密码框的情况,可能需要不同的处理方式。比如,对于普通的输入框,除了设置auto-complete,可能还需要将type设置为text,并结合autocomplete="off"来防止自动填充。此外,动态生成随机ID可能也是一个有效的方法,避免浏览器根据固定的id或name属性填充历史数据。 接下来,我需要确保提供的代码示例正确无误,并且覆盖不同的场景。对于密码框,使用type="password"并添加auto-complete="new-password"是正确的。而对于普通输入框,可能需要结合type="text"和autocomplete="off"。同时,动态ID的方法可以进一步防止浏览器识别表单结构。 还需要考虑用户可能遇到的问题,比如某些浏览器可能忽略autocomplete设置,这时候动态生成ID或随机属性可能更有效。此外,样式问题也需要处理,比如隐藏浏览器的密码提示图标,可以通过CSS调整。 最后,生成的相关问题需要涵盖不同场景,帮助用户应对各种可能的情况,比如普通输入框的自动填充、样式调整以及浏览器兼容性问题等。确保每个建议都有对应的引用支持,比如引用[2]和[4]提到非密码框的处理,而引用[1]和[3]专注于密码框的情况。 总结步骤:确认解决方案的正确性,覆盖不同输入类型,提供代码示例,处理潜在问题,生成相关问题,并正确引用来源。</think>### 解决方案 在Element UI中禁止浏览器自动填充账号密码,可通过以下方法实现: #### 1. **密码输入框禁止自动填充** 针对`type="password"`的输入框,添加`auto-complete="new-password"`属性: ```html <el-input type="password" v-model="form.password" auto-complete="new-password" ></el-input> ``` 此属性会告知浏览器不要填充历史密码,适用于密码输入场景[^1][^3]。 #### 2. **普通输入框禁止自动填充** 对于非密码输入框(如用户名、邮箱),需结合以下方法: - **设置`type="text"`和`autocomplete="off"`**: ```html <el-input type="text" v-model="form.username" autocomplete="off" ></el-input> ``` 部分浏览器可能忽略`autocomplete="off"`,需进一步处理[^2][^4]。 - **动态生成随机`id`或`name`属性**: 浏览器常通过固定`id`或`name`(如`username`、`password`)触发填充,动态生成随机属性可绕过识别: ```html <el-input :id="'input-' + Math.random()" type="text" v-model="form.username" ></el-input> ``` #### 3. **隐藏浏览器密码提示图标** 若输入框右侧出现历史密码提示图标,可通过CSS隐藏: ```css .el-input::-webkit-credentials-auto-fill-button { display: none !important; } ``` ### 注意事项 - **浏览器兼容性**:不同浏览器对`autocomplete`的支持有差异,建议结合动态属性和样式调整[^2]。 - **表单结构**:避免在表单中使用`username`、`password`等敏感字段命名,改用`account`、`pwd`等替代[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值