在部分视图中,有一个绑定到模型属性的文本框字段。此文本框用于敏感信息。所以,我想用星号(*)掩盖最后几个字符。
如果我使用输入类型设置为“password”的EditorFor(),则所有字符都被屏蔽,这不符合我的目的。
我想要的功能是 1)文本框中的最后4个字符应显示为****(即使用户输入输入,而不仅仅是文本框焦点外 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>