代码改变世界

HTML密码文本框总自动填充的问题

  Evan.Pei  阅读(316)  评论(0编辑  收藏  举报

1.在开发登陆页面时无论是否记住密码网页都会自动填充登陆过的用户名密码进入因为有一个password的存在。

2.解决思路是文本框还是用text,只是里面的内容用●代替,将密码放入他的一个属性中。

3.在文本框输入时去更新属性。

1
<input id="txt_2" maxlength="20" placeholder="密码" onfocus="Clearpwd();" password=""  class="form-control" />
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//监听录入事件
    function UpdatePwd() {
        document.getElementById("txt_2").addEventListener('input', function () {
            var _this = this;
            var newPassword = _this.value;
            var oldPassword = window.decodeURIComponent(window.atob(_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', window.btoa(window.encodeURIComponent(truePassword)));//加密
            _this.value = newPassword;
            // 解决在win8中光标总是到input框的最后
            _this.selectionEnd = p;
            _this.selectionStart = p;
        }, false);
    }
    //获取光标事件
    function Clearpwd() {
        $("#txt_2").val("");
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function SaveData() {
        var name = $("#txt_1").val();
        var pwd = window.decodeURIComponent(window.atob($("#txt_2").attr("password")));//密码属性;
        var zz = /["'<>%;)(&+]/;
        if (zz.test(name) || name == "" || zz.test(pwd) || $("#txt_2").val() == "") {
            Alert2("不能录入特殊字符且不能为空!");
            return false;
        }
        $.post("/Backstage/SaveUser", { name: name, pwd: pwd, oldid: $("#hi_rid").val() }, function (data) {
            Alert2(data);
            CloseChy2("div_addProduct");
            GetContent("");
        });
    }

  

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示