【问题标题】:How to make an HTML input show as asterisk "like a password input" except for the last 4 digits?除了最后 4 位数字外,如何使 HTML 输入显示为“像密码输入一样”的星号?
【发布时间】:2020-09-29 17:33:26
【问题描述】:

我有一个允许用户输入社会安全号码的表单。我希望 HTML 输入隐藏前 5 位,而只显示后 4 位。

例如,如果用户键入123-45-6789,则输入将显示***-**-6789。我正在使用Inputmask Plugin 来屏蔽输入并强制用户以设置的格式输入数字。但是,我很困惑如何将前 5 位数字显示为星号,同时让其余数字可见。

这是我目前使用的面具

<input type="text" class="masked-input" data-inputmask="'mask': '999-99-9999'" value="" />

这是我激活该输入的方法

(function () {

    Inputmask().mask(document.querySelectorAll(".masked-input"));
});

如何使输入显示为星号“密码”,除了最后 4 位数字?如果无法使用这个插件,如果没有这个插件或使用其他插件,我该怎么办?

【问题讨论】:

  • 如果我到目前为止只输入了 8 位数字,它应该显示“****5678”还是“*****678”?
  • @JohnWu 掩码需要 9 位数字。如果您输入 8 位数字“仍在输入”,则掩码将显示 ***-**-678

标签: jquery masking maskedinput input-mask jquery-inputmask


【解决方案1】:

我能得到的最接近的是下面的代码:

$(document).ready(function(){
  var new_value = '';
      $('body').on('keyup', '#maskInput', function(event){
        var curr_value = $(this).val();
        if (event.which == 8) {
          if(curr_value.length<1){
            new_value = '';
          }else{
            var omitted = curr_value.slice(0, -1);
            $(this).val(omitted);
          }
        }else{
          var ch = curr_value.charAt(curr_value.length-1);
          if(curr_value.length<8){
            if(ch == '-'){
              new_value = new_value+'-';
            }else{
              new_value = new_value+'*';
            }
            $(this).val(new_value);
          }
        }
      })
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

  <form>
    <input type="text" id="maskInput">
  </form>

【讨论】:

  • 任何方式都可以在 Inputmask 插件中完成,以允许我创建掩码以及隐藏星号?
  • 恐怕,我无能为力。没用过这个插件。
猜你喜欢
  • 2012-08-09
  • 2011-04-29
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 2016-06-18
相关资源
最近更新 更多