【问题标题】:How to mask last few characters in textbox using ASP.NET MVC如何使用 ASP.NET MVC 屏蔽文本框中的最后几个字符
【发布时间】:2015-11-13 22:07:34
【问题描述】:

在局部视图中,有一个文本框字段绑定到模型属性。此文本框用于敏感信息。所以,我想用星号(*)掩盖最后几个字符。

如果我使用 EditorFor() 并将输入类型设置为“密码”,那么所有字符都会被屏蔽,这不符合我的目的。

我想要的功能是 1) 文本框中的最后 4 个字符应显示为 ****(即使用户输入输入,而不仅仅是超出文本框焦点 2) 发送给控制器的数据必须包含实际值。

请提出建议。

【问题讨论】:

  • 为什么你不能使用 string.Format 函数或者这是在网页中
  • 没有 html 表单控件可以做到这一点(在 MVC 中也没有)。你需要编写你的 jquery 插件
  • 您不想屏蔽所有内容并仅显示最后 4 个字符吗?
  • @MethodMan 可悲的是,这是要求,我几乎无法改变它
  • 我会发布一些你可以用来开始和玩耍的东西。还有the last 4 characters should be displayed and the first 5 chars should be * if it were SSN # for example那个盒子里有什么类型的数据..

标签: c# jquery asp.net asp.net-mvc kendo-ui


【解决方案1】:

你可以这样做。

    @model WebApplication1.Models.MyModel
@{
    ViewBag.Title = "Home Page";
}

<br/>
<label>Enter your SSN</label>
<input type="text" id="visiblesecret"/>
@Html.HiddenFor(m=>m.MySensitiveField,new{@id="secret"})

<script src="~/Scripts/jquery-1.10.2.min.js"></script>

<script type="text/javascript">
    jQuery(document).ready(function ($) {
        $('body').on('keyup', '#visiblesecret', function(event) {
            var typedtext = $('#visiblesecret').val();
            $('#secret').val(typedtext);
            if (typedtext.length >= 7) {
                var len = typedtext.length;
                var nonSecretChars = '';
                var secret = '';
                switch (len) {
                    case 7:
                        nonSecretChars = typedtext.substring(0, len - 1);
                        secret = nonSecretChars + '*';
                        break;
                    case 8:
                        nonSecretChars = typedtext.substring(0, len - 2);
                        secret = nonSecretChars + '**';
                        break;
                    case 9:
                        nonSecretChars = typedtext.substring(0, len - 3);
                        secret = nonSecretChars + '***';
                        break;
                    case 10:
                        nonSecretChars = typedtext.substring(0, len - 4);
                        secret = nonSecretChars + '****';
                        break;
                    default:
                        alert("Invalid SSN");
                        $('#secret').val('');
                        $('#visiblesecret').val('');
                        return;
                }
                $('#visiblesecret').val(secret);
                //alert('You entered ' + $('#secret').val());
            }
        });
    });
</script>

【讨论】:

    【解决方案2】:

    如果您想保留最后 4 的值以防您的需求发生变化,请执行以下操作

    //var last4 = myString.Substring(myString.Length - 4, 4);
    

    如果要存储前 5 个字符,请执行以下操作

    //myString.Substring(myString.Length - 9, 5)
    
    var maskDelim = new string('*', 4);
    var myString = "123456789";
    var maskResults = myString.Substring(0, 5);
    maskResults = maskResults + maskDelim;
    

    【讨论】:

    • 只处理初始显示 - 它不处理“即使用户输入输入”
    猜你喜欢
    • 2021-10-10
    • 2015-05-14
    • 1970-01-01
    • 2012-01-02
    • 2019-08-12
    • 2017-10-19
    • 2013-12-04
    • 1970-01-01
    • 2020-02-10
    相关资源
    最近更新 更多