【问题标题】:Getting the masked value of a password field?获取密码字段的掩码值?
【发布时间】:2011-10-10 07:37:44
【问题描述】:

我有一个普通的密码字段,我想从中“获取”掩码值 - 是的,那个丑陋的 ********** 混淆值。

HTML:

<input type="password" name="password" value="" id="password"></input>

JS/JQ DOM:

$("#password").val(); // Password in cleartext

【问题讨论】:

  • 被屏蔽的值只是一系列相同的字符。没用。
  • 真的,你为什么需要“掩码值”?你只想要字符数对吗?有些浏览器显示星号,有些显示大点等。
  • 掩码值是什么意思?掩码值只是明文,但是被混淆了,所以其他人看不到。密码当然是按原样发送的(值是你的输入,如果您在密码字段中写入“密码”,则该字段的值是密码)否则服务器将如何检查您的用户名/密码组合是否正确?

标签: jquery html input passwords


【解决方案1】:

如果您的意思是想要一个包含与您在密码字段中插入的字符数一样多的* 的字符串,您可以这样做:

var password = $("#password").val();
password  = password.replace(/./g, '*');

【讨论】:

  • 也许我很愚蠢,但我明白他是在暗示密码有一个“屏蔽”值。看到其他答案我错了,我会编辑我的答案。
  • 这不是答案。这是一个评论。我不是说你在里面写的是错的。
  • 那是一个干净的oneliner。谢谢!
  • @Zootious 我没有复制你的答案,我只是编辑了我之前做过的一个(我们或多或少同时发疯了这个帖子,我们也有同样的想法!:))跨度>
【解决方案2】:

$("#myfield").val(); 上做一个正则表达式替换,用* 替换所有字符?

alert($("#myfield").val().replace(/./g, '*'));

【讨论】:

  • 我怀疑这会对性能产生任何明显的影响。
  • 如果您的目标是节省几个 CPU 周期,那可能不是 您的 点。 我的 点是在一个易于阅读的行中完成一项简单的任务,而无需创建辅助函数。
  • 这种方法促进了糟糕的编码实践。您可以在没有辅助函数的情况下在一行中解决此问题(尽管在此处创建辅助函数是正确的东西),而无需使用整个模式匹配引擎。
【解决方案3】:

随时随地获取a string repeat function,然后使用它:

repeat('*', $('#myfield').val().length);

或(取决于您使用的实现):

'*'.repeat($('#myfield').val().length);

我的个人建议:

function repeat(s, n) {
    return new Array(isNaN(n) ? 1 : ++n).join(s);
}

var password = "lolcakes";
console.log(repeat('*', password.length));
// ^ Output: ********

Live demo.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2022-01-19
    • 2021-03-18
    • 2011-11-30
    相关资源
    最近更新 更多