JavaScript代码不允许我输入逗号
JavaScript Code is not Letting me Input Commas
我正在尝试制作一个贷款计算器,它一次最多只能键入两个小数。不幸的是,为了做到这一点,我不得不为输入添加一个不允许输入逗号的脚本。我不知道为什么不允许使用逗号。我想要逗号来分隔每三个数字。例如,1000000。
我的页面的工作示例可以在以下位置看到:http://thetotempole.ca/sales/loancalculator.php
我不是在寻求建议,而是寻求解决我问题的完整方案。
这是我目前使用的脚本:
<script>
function trimDP(x, dp) {
x = parseFloat(x);
if (dp === 0)
return Math.floor(x).toString();
dp = Math.pow(10, dp || 2);
return (Math.floor((x) * dp) / dp).toString();
}
window.addEventListener('load', function () {
var nodes = document.querySelectorAll('.dp2'), i;
function press(e) {
var s = String.fromCharCode(e.keyCode);
if (s === '.')
if (this.value.indexOf('.') === -1)
return; // permit typing `.`
this.value = trimDP(this.value + s);
e.preventDefault();
};
function change() {
this.value = trimDP(this.value);
}
for (i = 0; i < nodes.length; ++i) {
nodes[i].addEventListener('keypress', press);
nodes[i].addEventListener('change', change);
}
});
</script>
这是我的输入代码:
<input type=text name=loan size=10 class="dp2">
您有几个错误。
正如我所写的评论。e.keyCode
在火狐上不起作用,至少在我的火狐上是不起作用的。相反,你应该做
var s = String.fromCharCode(e.keycode || e.charCode);
通过在按键监听器中执行e.preventDefault();
,您可以禁用任何按键,包括箭头键、退格键、删除键等。
我甚至一百次都不会提到parseFloat
。
有关确定按下哪个键的详细信息。
您的tripDP
函数正在调用parseFloat
,删除除小数点之外的所有非数字字符。这就是为什么你也不能在里面键入"a"或"@"。。。
如果您想支持逗号字符,则需要对该函数进行认真的重写。
这是因为对数字使用parseFloat
,然后将字段的值设置回该值。字符串转换为数字后,逗号将被删除,因为数字中唯一有效的非数字字符是表示小数点的句点。
如果你想让人们能够输入逗号,你就必须停止使用数学函数,而是将数据作为字符串处理,并使用正则表达式来修剪多余的小数点。
请参阅另一个问题,以获得所需功能的示例:
如何在JavaScript 中以逗号作为千位分隔符打印数字
相关文章:
- 如何使用ng repeat中的选定输入更新我的对象
- $interval不允许我更新前端
- 允许我在用户操作后隐藏YouTube视频吗
- 时刻时区.js允许我传递时区缩写并获取转换后的日期/时间
- 在具有动态值的函数上使用的变量不允许我通过 ajax 发送表单
- 剑道网格不允许我在使用自定义列模板时过滤列
- Timeglider 不允许我使用给定函数销毁所有变量
- getElementsByClassName不允许我更改字体大小
- 如何允许我的访问者通过拖放来排列列表项目
- WebKit文本输入允许超过524288个字符
- 脚本问题,获胜'Don’不允许我跑步和使用
- jquery链接到输入到我的表单中的链接技巧
- setTimeout() 不允许我传递文本值
- 升级的 Excel 和现在的 Visual Studio 不允许我运行我的外接程序项目
- WinJS 不允许我将事件处理程序附加到动态创建的 HTML 元素
- 我需要一个javascript/html插件,它允许我在不编辑文件的情况下发布新闻.html
- 自动数字系统不允许我输入小数
- React-bootstrap表单只允许我在value设置为this.state.value时输入
- JavaScript代码不允许我输入逗号
- 为什么jquery不允许我附加一个输入表单FormData.append()