我有一个输入,我想掩盖并格式化你输入的值。我试过下面的
var tempVar = myInputValue.replace("/D/g","").match("/d/g{3}","/d/g{2}","/d/g{4}");
var maskedValue = myInputValue[0]."-".myInputValue[1]."-".myInputValue[2];
现在格式化即将进入1234567890,它已转换为123-456-7890
。但是,如果我想用' x'替换这些输入,它只会更改我输入的第一个字符,但是从第二个按键,因为我们限制字符,它首先删除' x&# 39;
我只想将输入的数字更改为" x"并检索我输入的原始值。请建议我一个很好的方法来做到这一点。先谢谢。不要关闭这个,因为我搜索了很多。
答案 0 :(得分:1)
var data = ''
function keyDown()
{
console.clear()
event.preventDefault()
if (!isNaN(event.key) & data.length <= 9) {
data += event.key
var mask = data.replace(/\d/g, "x")
if (data.length > 3) {
mask = mask.slice(0, 3) + "-" + mask.slice(3);
if (data.length > 6) {
mask = mask.slice(0, 7) + "-" + mask.slice(7);
}
}
document.getElementById("input").value = mask
}
document.getElementById("divOutput").innerHTML = data
console.log(data)
}
<input id="input" type="text" onkeydown="keyDown()"></br>
Original value (var data): <div id="divOutput"></div>
答案 1 :(得分:0)
根据你的例子,我认为你试图做的是这样的:
var tempVar = myInputValue.replace(/\D/g,"").match(/(\d{3})(\d{3})(\d{4})/);
var maskedValue = tempVar[1] + "-" + tempVar[2] + "-" + tempVar[3];
maskedValue.replace(/\d/g, "x"); // xxx-xxx-xxxx
仔细查看replace和match中的regExp,捕获用括号括起来的那些值。