1

假设我有一个文本框,并且我希望当用户在其中键入时,每个字符将在 1 秒后由 jQuery 转换为密码符号。

当我们输入密码文本框时,我们在现代智能手机上看到的效果相同。

有没有人有什么建议?我知道如何捕捉按键并让用户输入字符。

<input type="text" id="username" name="username" />
<script type="text/javascript">
$("#username").keypress(function(event){   

// Get the keypress value
// ...?

var c = String.fromCharCode(e.which);

}

});
</script>
4

3 回答 3

2

你可以从这个开始:http: //jsfiddle.net/89CF8/7/
但它只有在你输入正确的情况下才有效。
您应该将值保存在另一个变量中(我letters在示例中使用数组),因为标准输入只允许您将其值更改为星号,从而丢失所有已键入的用户。

问题 #1。您应该添加对非符号的检查。例如,Del 键会将坏符号添加到letters数组中。

问题 #2。您应该添加检查退格并用于splice删除元素。

问题 #3。如果用户从文本中间删除符号,则很难将新值与存储初始值的变量同步。

毕竟,我认为这不是一个好主意,但也许我的代码会帮助您找到更好的解决方案。

于 2012-06-07T15:27:11.323 回答
1

你实际上并不需要处理按键。使用 1 秒超时循环,并将文本框中的所有字符替换为星号。并且不要忘记将字符存储在变量中。

像下面这样的东西会帮助你,但你必须花一些时间来修复错误。 http://jsfiddle.net/ymutlu/8BXDu/2/

于 2012-06-07T13:55:20.810 回答
0

通过javascript自定义掩码密码

自定义掩码密码

    <style>
    .mask {
        position: relative;
        overflow: hidden;
    }

    input#pass {
        position: absolute;
        left: 0;
        top: 0;
        opacity: 0;
    }
    </style>
    <script>

var txt = document.getElementById("txtMask");
var hdn = document.getElementById("pass");


hdn.addEventListener("keyup", function(evt){

  txt.value = '';
   for(let i=0; i<hdn.value.length;i++)
       {
           txt.value +='@';
      }         

});
</script>
<div class="mask">
<input type="text" id="txtMask" autocomplete="false">
<input type="text" id="pass">
</div>
于 2020-04-01T08:57:18.990 回答