无法从输入类型编号值中删除逗号

Oli*_*ans 6 javascript validation jquery html5 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);
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

Jam*_*lly 14

这里的问题不在于你不能删除逗号,它是逗号不是有效*中input的元素typenumber.

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

例

发生这种情况是因为值"1,234"被视为无效.由于这是无效的,元素value将返回为空字符串而不是字符串值"1,234".

parseFloat("".replace(/,/g, ''))回报NaN.

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


*重要的是要注意这是特定于实现的.HTML5规范规定,"鼓励浏览器供应商考虑什么才能最好地满足用户的需求".将逗号视为无效是此考虑的一部分.