当前位置: 首页 > 面试题库 >

输入字段的部分密码屏蔽

司徒茂实
2023-03-14
问题内容

所以我需要屏蔽一个SSN#输入字段,假设ssn是123-45-6789,我需要显示***-**-6789(他们输入每个数字时都是实时的),但是我仍然需要保留原始值以提交。

如果用户严格输入值,我可以做到这一点,但是如果用户执行其他任何操作(如删除或将光标移动到随机位置并添加/删除数字,复制粘贴/删除等),它就会中断如果可能的话,我真的不想听一堆事件来完成这项工作。

我还尝试过在输入字段的顶部放置一个div来显示被屏蔽的ssn,而实际的ssn在其后是透明/隐藏的,但是它们又失去了可以在随机部分中添加/删除/选择删除/粘贴的功能(否则,当它们从末尾开始时),并且光标也未与ssn号码的末尾完全同步(星号大小是问题)。这在某些移动浏览器上也中断了。

我还想到了两个单独的输入字段,一个类型的密码和一个类型的文本彼此相邻,但是再次突出显示和删除/粘贴这两个字段将是一个问题。

理想的情况是,如果有一个输入字段具有两种类型,其中一部分是password类型,另一部分是text类型,那就太好了。顺便说一句,这是为React
js应用程序。

TLDR:需要一个功能齐全的输入字段,该字段将仅对ssn的前5位数字进行密码屏蔽,而对后4位数字采用纯文本格式(同时具有可提交的完整纯文本值)。

谢谢!


问题答案:

这可能有点草率,但它可以按您希望的方式工作,全部在一个文本字段中,返回完整的准确SSN(尽管将前5个值替换为项目符号点),并允许在字段中的任何位置进行编辑。

<input type="password" id="ssn" maxlength=9 />



<script>

    var ssn = document.getElementById('ssn');

    ssn.addEventListener('input', ssnMask, false);

    var ssnFirstFive = "";

    var secondHalf = "";

    var fullSSN = "";



    function ssnMask(){

        if (ssn.value.length <= 5){

            ssn.type = 'password';

        }

        else{

            detectChanges();

            secondHalf = ssn.value.substring(5);

            ssn.type = 'text';

            ssn.value = "•••••";

            ssn.value += secondHalf;

            fullSSN = ssnFirstFive + secondHalf;

        }

    }



    function detectChanges() {

        for (var i = 0; i < 5; i++){

            if (ssn.value[i] != "•"){

                ssnFirstFive = ssnFirstFive.substring(0, i) + ssn.value[i] + ssnFirstFive.substring(i+1);

            }

        }

    }

</script>

本质上,每次更改输入时,它都会检查是否与之前的前5个匹配,如果不匹配,它将更新必要的字符。



 类似资料:
  • 本文向大家介绍如何验证在JavaFX密码字段中输入的密码?,包括了如何验证在JavaFX密码字段中输入的密码?的使用技巧和注意事项,需要的朋友参考一下 文本字段接受并显示文本。在最新版本的JavaFX中,它仅接受一行。 与文本字段类似,密码字段接受文本,但是不显示给定的文本,而是通过显示回显字符串来隐藏键入的字符。 在JavaFX中,javafx.scene.control.PasswordFie

  • 我使用的是javafx文本字段。我需要输入与格式##########匹配的数字和小数### 小数不可编辑,数字可以是任意数字;不允许其他输入。并非所有数字占位符都需要填写,例如,它可能是1.2或2.22.1,甚至是1.222.222.0 我尝试使用模式匹配与正则表达式来验证更改的文本,但仅此而已;它验证输入,它不会使十进制字段成为不可编辑的字段,并且工具提示不是一个选项。我不确定还能尝试什么。 我

  • 问题内容: 如何从控制台输入中屏蔽密码?我正在使用Java 6。 我尝试使用,但无法使用。一个完整的例子可能实际上对我有帮助。 这是我的代码: 我收到 问题答案: 一个完整的例子?运行以下代码:(注意:此示例最好在控制台中运行,而不是从IDE内部运行,因为在这种情况下System.console()方法可能返回null。)

  • 问题内容: 我要设计图片中的内容,用户要输入一个四位数的一次性密码(OTP)。现在,我已经通过4个单独的输入,然后在javascript中组合值来实现了这一点: 我不确定这是否正确。我认为必须有一些样式选项,一个输入文本框将像在图像中一样显示为分区的一个。是否可以使用引导程序?如何设置一个输入控件显示为输入分区的样式? 问题答案: 您不必保留4个单独的字段; 首先,您应该调整字符间距,然后调整底部

  • 请输入主密码来加密保存在注册表里的密码记录,并保护它们免遭未经授权的访问。此后,您会需要在密码提示框里输入主密码来访问这些密码。一旦输入完毕,主密码在关闭 WinRAR 之前始终有效。如果您希望看到它是如何保护的,请在指定主密码后关闭 WinRAR 并重新打开它。输入空密码来从先前保护的密码记录里删除加密。 仅当您在上级“管理密码”对话框里按下“确认”后,实际的加密才执行,而不是在您关闭此主密码提

  • 主要内容:创建密码字段,示例用于密码输入。用户键入的字符通过显示回显字符串被隐藏。 创建密码字段 以下代码使用来自类的默认构造函数创建一个密码字段,然后为密码字段设置提示消息文本。 提示消息在字段中显示为灰色文本,并为用户提供该字段是什么的提示,而不使用标签控件。 类有方法来为控件设置文本字符串。对于密码字段,指定的字符串由回显字符隐藏。默认情况下,回显字符是一个点(或是星号)。 密码字段中的值可以通过方法获取。 示例 密码