javascript - 无法从输入类型数值中删除逗号

标签 javascript jquery html 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>

最佳答案

这里的问题不是不能删除逗号,而是 input 元素中的逗号无效* typenumber

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

Example

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

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

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


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

关于javascript - 无法从输入类型数值中删除逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408182/

相关文章:

javascript - 为什么在超小的屏幕尺寸下,当我点击折叠按钮时它没有打开?

javascript - 在angularjs中添加背景图片,css不起作用

php - 如何使用 jQuery JSON 从 PHP JSON 中提取值?

javascript - 在设备中打开数字键盘时出现问题

html - 防止 anchor 将页面推到底部(HTML)

javascript - 如何修复 "Object is possibly undefined"?

javascript - 有没有办法在 Aptana Studio 3 IDE 中运行 JavaScript 代码?

javascript - 使用 Ajax 刷新 Javascript 下拉框

javascript - 如何获取 ID 集合以及从 View 表传递到 Controller 的选定下拉列表值?

html - 控制旋转加载图标的大小