如何在javascript中输入除了最后一个之外键入的那些字母的密码点?

时间:2018-02-13 14:09:24

标签: javascript

我想输入[type =“password”]只隐藏用户输入的字母,除了最后一个字母。
如果用户要在密码字段中写更多字母,那么之前的字母应该用密码点隐藏,最后一个字母应该保持可见,直到用户输入新字母为止。

欲了解更多信息,请访问:

password image

1 个答案:

答案 0 :(得分:0)

一种实现是创建一个新的输入类型..用除了最后一个之外的项目符号点替换键入的字符,然后在超时时替换最后一个。这样做会改变输入的值但是为了得到实际值,你必须使用myInput.getAttribute('data-value');代替myInput.value,这意味着你无法像提交它一样提交它正常形式。



(()=>{
  var to;
  var fields = document.querySelectorAll('[type=fancyPassword]');
  Array.from(fields).forEach(ele=>{
    ele.setAttribute("data-value", "");
    ele.addEventListener('keyup', function(){
        if(to) clearTimeout(to);
        if(!this.value.length) return;
        var typed = this.value.split('').pop();
        this.setAttribute("data-value", this.getAttribute("data-value")+typed);
        this.value = "•".repeat(this.value.length-1)+typed;
        to = setTimeout(()=>this.value = "•".repeat(this.value.length),500);
    });
  });
})();

<input type=fancyPassword>
&#13;
&#13;
&#13;