【问题标题】:How to pass the original value and not the replace number ( * )如何传递原始值而不是替换号( * )
【发布时间】:2019-03-08 19:13:02
【问题描述】:

显然,为了安全起见,我掩盖了 SSN 的数字...但是当我提交时,变量填充为“*--****”,并假设获取原始输入 ex。 123-45-6789。我只想屏蔽该输入。

JQuery:

$(function () {
        $('#ssn').keyup(function () {
            var val = this.value.replace(/[^\d\*]/g, '').replace(/\d/g, '*');
            var newVal = '';
            var sizes = [3, 2, 4];
            var maxSize = 10;

            for (var i in sizes) {
                if (val.length > sizes[i]) {
                    newVal += val.substr(0, sizes[i]) + '-';
                    val = val.substr(sizes[i]);
                } else {
                    break;
                }
            }
            newVal += val;
            this.value = newVal;
        });
    }); 

HTML:

<div class="col-lg-3 col-md-4">
                @Html.LabelFor(model => model.SolicitantDataView.SSN, htmlAttributes: new { @class = "control-label col-lg-12 col-md-3 required" })

                @Html.EditorFor(model => model.SolicitantDataView.SSN, new { htmlAttributes = new { @class = "form-control ssn ssnControl", @id = "ssn", @maxlength = "11" } })
                @Html.ValidationMessageFor(model => model.SolicitantDataView.SSN, "", new { @class = "text-danger" })
            </div>

我尝试过这种方式,但是 require 方法不再起作用了...

 $(document).ready(function(){
        $('.ssn').unmask().maskSSN('999-99-9999', { maskedChar: 'X', maskedCharsLength: 5 });
    });

【问题讨论】:

    标签: c# jquery html asp.net-mvc


    【解决方案1】:

    通过 replace() 输入 val,您将覆盖原始键入的数据。这就是为什么你只得到星号。一个简单的方法是使用hidden 控制输入,您可以在其中存储在屏蔽之前键入的值。但正确的做法是使用支持 SSN 的 js 掩码扩展(或者更好的是,自定义掩码)。

    【讨论】:

    • 你能举个例子解释一下吗,我是js新手=/
    • 我是这样做的 $(document).ready(function(){ $('.ssn').unmask().maskSSN('999-99-9999', { maskedChar: 'X', maskedCharsLength: 5 }); });但是要求消失了……为什么?
    猜你喜欢
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多