如何使用ASP.NET MVC屏蔽文本框中的最后几个字符

时间:2015-11-13 22:07:35

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

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

如果我使用输入类型设置为“password”的EditorFor(),则所有字符都被屏蔽,这不符合我的目的。

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

请建议。

2 个答案:

答案 0 :(得分:1)

如果您想保留最后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;

答案 1 :(得分: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>