javascript - 如何屏蔽除最后一位以外的所有内容
问题描述
我正在尝试使用 jquery 掩码掩盖除最后一位之外的所有内容,但我无法获得执行此操作的逻辑。以下是我到目前为止所尝试的。
$(document).ready(function() {
var options = {
onKeyPress: function(value, event, currentField, options) {
var fieldVal = currentField.val();
var star = '';
for (var i = 0; i < fieldVal.length - 1; i++) {
star += '*';
}
currentField.val(currentField.val().replace(/(.)(?!$)/g, star));
}
}
$('.phone').mask('00000', options);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.js"></script>
<div>
<input type="text" class="phone" />
</div>
解决方案
您面临的问题与应用有关mask
,您正在使用00000
,并且 a0
只接受一个数字作为该位置的输入。您需要在选项中添加自定义翻译,如此处所述。
为了生成输入的新值,我将使用带有自定义替换函数的String.replace()来替换除最后一个字符之外的所有字符。*
例子:
$(document).ready(function()
{
var options = {
translation: {0: {pattern: /[0-9*]/}},
onKeyPress: function(val, evt, currField, options)
{
let newVal = val.replace(/./g, (m, o, str) => (o !== str.length - 1 ? '*' : m));
currField.val(newVal);
}
};
$('.phone').mask('00000', options);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.js"></script>
<div>
<input type="text" class="phone" />
</div>
推荐阅读
- javascript - 无法在 React-Native 中检测到的面部上绘制边界框
- apache-spark - 解释 Spark 配置之间的区别
- android - 安卓依赖
- c# - 虚拟键倾斜移动
- java - 崩溃报告中数组的索引号和大小信息是否与原始代码保持一致?
- python - 是否可以更改 `typing.TypedDict` 的字符串表示形式?
- c# - 如何使用 stringbuilder 中的按钮制作模态模块?
- javascript - 盖茨比:如果选择了新项目,如何关闭以前打开的项目?
- python - 如何在不遍历每个像素的情况下同时裁剪具有窗口大小的 numpy 数组的每个元素?
- debugging - VSCode:如何跳过