【问题标题】:Masking number at a particular position [closed]特定位置的掩码编号[关闭]
【发布时间】:2017-12-05 06:15:59
【问题描述】:

我有一个最大长度为 15 个字符的输入字段。 我想做这样的事情

原号码:784198012345671 应该是:784********5671

【问题讨论】:

  • 您想在用户仍在键入输入时执行此操作,还是在稍后必须在某处显示值时执行此操作?
  • 当用户输入输入时。
  • 我看不到你的努力。你也没有提到你什么时候想要这个。
  • 所以当用户键入值时,你想显示784****,没有意义。
  • 用户可能知道自己的电话号码...

标签: javascript jquery


【解决方案1】:

实现你想要的东西的过程取决于是否:

  1. 您想在输入值后屏蔽该值或
  2. 您想在键入时屏蔽该值。

如果你想这样做,在输入值后,下面应该可以解决问题。

片段:

var
  /* The original value. */
  n = "784198012345671",
  
  /* The masked value. */
  masked = n.slice(0, 3) + Array(8).join("*") + n.slice(-4);

/* Log the result. */
console.log(masked);

如果您想在输入过程中屏蔽输入,事情会变得更加复杂。

片段:

$(".newsocial").on("keyup", function(e) {
  /* Turn the value into an array of characters. */
  var value = this.value.split("");
  
  /* Iterate over every character. */
  value.forEach(function (char, index) {
    /* Replace the character with a placeholder when appropriate. */
    if (index >= 3 && index <= 10) value[index] = "*";
  });
  
  /* Turn the array of chars into a string & assign it to the value of the input. */ 
  this.value = value.join("");
})
<!--- HTML --->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" maxlength="15" id="input-card" class="newsocial">

【讨论】:

  • jsfiddle.net/SyedMoiz/s590ft4w 它显示最后 6 位数字,但我希望它显示最后 4 位数字
  • 查看我的编辑@moiz45。
  • 谢谢@angel 它工作正常
  • 我很高兴能帮助你@moiz45。
  • @AngelPolitis 伟大的工作伙伴。但是在几分之一秒内,您的代码会在混淆之前显示数字;你不认为它可以被窥探滥用。这解决了这个问题stackoverflow.com/questions/45113132/…;你怎么看?
【解决方案2】:
const original = "784198012345671",
 obfuscated = original.substr(0, 3) + "*".repeat(original.length - 7) + original.substr(-4);

您可以使用 substr 获取数字的开头和结尾的数字组,然后使用 repeat 填充中间的星号。

【讨论】:

【解决方案3】:

将您的数字转换为字符串并使用 string.prototype.substringstring.prototype.repeate 构建部件:

var number = 784198012345671;
number = number.toString();
var res = number.substring(0, 3) + '*'.repeat(8) + number.substring(11, 15);
console.log(res);

【讨论】:

    【解决方案4】:

    将整数替换为字符串

    迭代字符串并将位置替换为*

    let number = 123455666777888;
    let stringedNum = number.toString();
    
    for(i=0;i<stringedNum.length;i++) {
      if(i>5 && i<10) { // change this line as per your need
         console.log(i)
         stringedNum = stringedNum.replace(stringedNum[i],'*');
      }
    }
    console.log(stringedNum)

    【讨论】:

    • @投反对票的绅士;他不清楚何时更换;这就是我采用这种方法的原因;将编辑或删除。
    • 至少他们应该给出理由。他们是多么的心胸狭窄。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2016-05-09
    • 2021-12-28
    • 1970-01-01
    • 2013-10-21
    • 2021-06-23
    相关资源
    最近更新 更多