javascript - 是否可以在不影响输入值的情况下屏蔽 javascript 中的输入?
问题描述
我正在尝试将掩码应用于数字(没有小数的货币格式),但需要能够仅在用户端显示掩码(因为“平面”数字是数学公式的一部分,并且不能使用逗号或点)。
我希望能够在用户端“$253,487”显示类似的内容,并将此信息发送到公式“253487”。
这是我尝试的最后一件事,但当然不起作用:
const number = document.querySelector('.number');
function formatNumber(n) {
n = String(n).replace(/\D/g, "");
return n === '' ? n : Number(n).toLocaleString();
}
number.addEventListener('keyup', (e) => {
const element = e.target;
const value = element.value;
element.value = formatNumber(value);
});
<input class="number">
解决方案
你拥有使它起作用的所有成分。可能您需要将当前formatNumber
函数分成两个函数,因此您有一个用于获取纯数字(仅限数字),另一个用于格式化。目前该功能正在做这两个。
所以像这样:
const number = document.querySelector('.number');
function getInputValue(inputElement) {
return parseInt(inputElement.value.replace(/\D/g, ""));
}
function formatInputValue(inputElement) {
let n = getInputValue(inputElement);
inputElement.value = Number.isNaN(n) ? "$" : "$" + getInputValue(inputElement).toLocaleString();
}
number.addEventListener('input', (e) => {
formatInputValue(e.target);
// Apply a formula
let n = getInputValue(e.target);
console.log("squared=" + (n*n)); // output the square
});
<input class="number">
推荐阅读
- python - 自定义 matplotlib 偏移中的移位
- python - 使用 Python 登录网站和网页抓取
- php - 使用逗号分隔值的 Codeigniter 搜索
- grails - 如何在 grails 3.3.8 中模拟被测控制器的方法
- firebase - FireStore Flutter 多步查询
- json - 用 jq 格式化时间
- reactjs - TypeError._this.props.addPerson 不是函数
- ansible - 如何让 Ansible 仅运行 1 次步骤
- hl7-fhir - 在 FHIR 结构中记录问题和答案
- graphql - Graphql,如何返回空数组而不是null