无法从输入类型编号值

时间:2015-07-14 13:33:31

标签: javascript jquery html5 validation input

我试图使用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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:14)

此处的问题不在于您无法删除逗号,而且inputtype的{​​{1}}元素中的逗号无效*。

如果我们在您的代码段中的字段中输入“1,234”并点击 Return ,我们会遇到以下验证错误:

Example

这是因为值“1,234”被视为无效。由于这是无效的,元素的number将返回为空字符串而不是字符串值“1,234”。

value返回parseFloat("".replace(/,/g, ''))

快速修复就是停止使用NaN输入类型并改用number。然而,这可能不是你想要的。另一种方法是检测text是否为空(value)并向用户显示验证失败消息。

* 重要的是要注意这是特定于实现的。 HTML5规范声明浏览器供应商是"encouraged to consider what would best serve their users' needs"。将此处的逗号视为无效是此考虑的一部分。

相关问题