可以在javascript中屏蔽输入而不影响输入值吗?

可以在javascript中屏蔽输入而不影响输入值吗?,javascript,html,Javascript,Html,我正在尝试将掩码应用到数字中(不带小数的货币格式),但需要能够仅在用户侧显示掩码(因为“平面”数字是数学公式的一部分,不能在其上使用逗号或点) 我想能够在用户端显示类似的内容“$253487”,并将此信息发送到公式“253487” 这是我尝试过的最后一件事,但当然无效: const number=document.querySelector('.number'); 函数格式编号(n){ n=字符串(n)。替换(/\D/g,“”); 返回n=''?n:Number(n).toLocalStrin

我正在尝试将掩码应用到数字中(不带小数的货币格式),但需要能够仅在用户侧显示掩码(因为“平面”数字是数学公式的一部分,不能在其上使用逗号或点)

我想能够在用户端显示类似的内容“$253487”,并将此信息发送到公式“253487”

这是我尝试过的最后一件事,但当然无效:

const number=document.querySelector('.number');
函数格式编号(n){
n=字符串(n)。替换(/\D/g,“”);
返回n=''?n:Number(n).toLocalString();
}
addEventListener('keyup',(e)=>{
常量元素=e.目标;
常量值=element.value;
element.value=格式编号(值);
});

您拥有使其发挥作用的所有成分。您可能需要将当前的
formatNumber
函数分为两个函数,一个用于获取纯数字(仅限数字),另一个用于格式化。目前,该函数正在同时执行这两个操作

所以像这样:

const number=document.querySelector('.number');
函数getInputValue(inputElement){
返回parseInt(inputElement.value.replace(/\D/g,“”);
}
函数formatInputValue(inputElement){
设n=getInputValue(inputElement);
inputElement.value=Number.isNaN(n)?“$”:“$”+getInputValue(inputElement.ToLocalString();
}
number.addEventListener('输入',(e)=>{
formatInputValue(如目标);
//套用公式
设n=getInputValue(e.target);
log(“squared=“+(n*n));//输出正方形
});

您拥有使其发挥作用的所有成分。您可能需要将当前的
formatNumber
函数分为两个函数,一个用于获取纯数字(仅限数字),另一个用于格式化。目前,该函数正在同时执行这两个操作

所以像这样:

const number=document.querySelector('.number');
函数getInputValue(inputElement){
返回parseInt(inputElement.value.replace(/\D/g,“”);
}
函数formatInputValue(inputElement){
设n=getInputValue(inputElement);
inputElement.value=Number.isNaN(n)?“$”:“$”+getInputValue(inputElement.ToLocalString();
}
number.addEventListener('输入',(e)=>{
formatInputValue(如目标);
//套用公式
设n=getInputValue(e.target);
log(“squared=“+(n*n));//输出正方形
});

这是我几乎经常使用的函数,但根据您的需要进行了修改。请注意,您需要有另一个隐藏的输入,它将被发送到只保存数字的位置

const number=document.querySelector('.number_tmp');
函数编号格式(数字、小数、小数点、千分){
//去除除数字字符以外的所有字符。
数字=(数字+'')。替换(/[^0-9+\-Ee.]/g'');
变量n=!isFinite(+数字)?0:+数字,
prec=!isFinite(+小数)?0:Math.abs(小数),
sep=(typeof millen\u sep=='undefined')?,':millen\u sep,
dec=(dec_点的类型==‘未定义’?’:dec_点,
s=“”,
toFixedFix=函数(n,prec){
var k=数学功率(10,prec);
返回“”+数学四舍五入(n*k)/k;
};
//修正IE parseFloat(0.55)。toFixed(0)=0;
s=(prec?toFixedFix(n,prec):“”+数学四舍五入(n)).split(‘.);
如果(s[0]。长度>3){
s[0]=s[0]。替换(/\B(?=(?:\d{3})+(?!\d))/g,sep);
}
如果((s[1]| |“)。长度{
常量元素=e.目标;
常量值=element.value;
element.value=number_格式(值,0,,,,,);
document.getElementById('number')。value=value.replace(/\D/g'))
});

这是我几乎经常使用的功能,但根据您的需要进行了修改。请注意,您需要有另一个隐藏的输入,它将被发送到只保存数字的位置

const number=document.querySelector('.number_tmp');
函数编号格式(数字、小数、小数点、千分){
//去除除数字字符以外的所有字符。
数字=(数字+'')。替换(/[^0-9+\-Ee.]/g'');
变量n=!isFinite(+数字)?0:+数字,
prec=!isFinite(+小数)?0:Math.abs(小数),
sep=(typeof millen\u sep=='undefined')?,':millen\u sep,
dec=(dec_点的类型==‘未定义’?’:dec_点,
s=“”,
toFixedFix=函数(n,prec){
var k=数学功率(10,prec);
返回“”+数学四舍五入(n*k)/k;
};
//修正IE parseFloat(0.55)。toFixed(0)=0;
s=(prec?toFixedFix(n,prec):“”+数学四舍五入(n)).split(‘.);
如果(s[0]。长度>3){
s[0]=s[0]。替换(/\B(?=(?:\d{3})+(?!\d))/g,sep);
}
如果((s[1]| |“)。长度{
常量元素=e.目标;
常量值=element.value;
element.value=number_格式(值,0,,,,,);
document.getElementById('number')。value=value.replace(/\D/g'))
});


似乎
格式编号
正在做您所需要的一切:(1)它将当前输入值从标点符号中去掉(这样您就可以得到数字编号),(2)它再次添加格式-这是您想要的显示格式。所以你对两者都有逻辑。您提到“公式”,但代码中没有公式。似乎
formatNumber
正在做您所需要的一切:(1)它从标点符号中删除当前输入值(这样您就可以得到仅限数字的数字),(2)它再次添加格式-您希望显示的格式。所以你对两者都有逻辑。您提到“公式”,但代码中没有公式。