如何在asp.net文本框控件中显示字符串作为密码字符和原始表单的组合

本文关键字:字符 密码 原始 组合 表单 字符串 显示 asp net 文本 控件 | 更新日期: 2023-09-27 18:09:31

我有一个文本框控件,用户可以通过这个控件添加/编辑/删除值。它只允许10位数字值。前5位数字应显示为密码字符,后5位数字应显示为其原始形式。(例如:值1234567890应该显示为***67890)。

如何在asp.net文本框控件中实现此功能?

如何在asp.net文本框控件中显示字符串作为密码字符和原始表单的组合

也许让两个文本框看起来靠得很近。即使给定了第一个框的行为,当前5个字符被填满时,焦点也会被放在第二个框上。

另一种方法是一个文本框和一个隐藏框。随着字符的输入,它们进入了隐藏区。隐藏内容被呈现到文本框中,在前5个字符之后,您将用*

替换任何其他字符。

像这样分开两个文本框,然后将它们组合在一起(可能是组合控件),将两个文本框的连接值作为属性公开。

标记

<div>
    <asp:TextBox ID="passwordPortionTextBox" runat="server" TextMode="Password" MaxLength="5"></asp:TextBox>
    <asp:TextBox ID="normalPortionTextBox" runat="server" MaxLength="5"></asp:TextBox>
</div>
脚本

$(function () {
    $('#<%= passwordPortionTextBox.ClientID %>').keypress(function () {
        if ($(this).val().length == 4) {
            $('#<%= normalPortionTextBox.ClientID %>').focus();
        }
    });
});

您不能在单个控件中实现此功能。使用两个文本框控件(并排),并将一个设置为密码字段,另一个设置为纯文本字段。当然,将max length设置为5

我认为这种行为是非常具体的,也许最好的方法是创建自己的文本框,它派生自asp.net文本框控件,然后将您的功能添加到它。

那可没那么容易。:D也许你也可以使用客户端代码,寻找文本更改或键斯托克,并将字符更改为密码字符,但随后你必须将原始字符串存储在某个地方。

我不是ASP方面的专家。但是我希望我的回答能对你有所帮助。

要使c#中的文本框仅以星号的形式显示前5个字符和最后一个字符(类似于密码字段),您可以处理文本框的TextChanged事件并按如下方式更新文本:

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 5)
{
    string maskedText = textBox1.Text.Substring(0, 5) + new string('*', textBox1.Text.Length - 10) + textBox1.Text.Substring(textBox1.Text.Length - 5);
    textBox1.Text = maskedText;
    textBox1.SelectionStart = textBox1.Text.Length;
}

}

在上面的代码中,我们首先检查文本框的文本长度是否大于5。如果是,我们创建一个名为maskedText的新字符串,该字符串包含文本框文本的前5个字符,后面是等于文本长度减去10的星号,然后是文本的最后5个字符。然后,我们将文本框的文本设置为maskedText字符串,并将SelectionStart属性设置为文本框的末尾,以便光标停留在被屏蔽文本的末尾。