我正在尝试使用JS / jQuery从输入值中删除逗号.
输入类型是数字,我正在键盘上运行消毒过程.
当输入类型是文本时,下面的代码工作正常,但当输入类型是数字时,则不能正常工作.
我正在使用输入类型编号作为货币输入,因此我试图删除逗号,例如某人输入$1,000.
我想使用输入类型编号,因为这主要用于移动设备.
有谁知道为什么这可能会取悦?
–
http://codepen.io/anon/pen/YXvxxK
$('.form input').on('keyup',function() { field1 = $('#field1').val(); var newField1 = parseFloat(field1.replace(/,/g,'')); console.log(newField1); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <form class="form"> <input type="number" id="field1" /> </form>
解决方法
这里的问题不是你不能删除逗号,而是逗号在类型为数字的输入元素中无效*.
如果我们在您的代码段中输入“1,234”并点击Return,我们会遇到以下验证错误:
发生这种情况是因为值“1,234”被视为无效.由于这是无效的,元素的值将返回为空字符串而不是字符串值“1,234”.
parseFloat(“”.replace(/,/ g,”))返回NaN.
对此的快速解决方法是停止使用数字输入类型并改为使用文本.然而,这可能不是你想要的.另一种方法是检测值是否为空(“”)并向用户显示验证失败消息.
*重要的是要注意这是特定于实现的. HTML5规范声明浏览器供应商是“encouraged to consider what would best serve their users’ needs”.将此处的逗号视为无效是此考虑因素的一部分.