javascript - 00、0.0 和 0,0 的 jQuery 测试

标签 javascript jquery

我有一个输入框 currency如果另一个字段上的值被禁用 fee为空或零。

HTML

Fee: <input id="fee"><br>
Currency: <input id="currency"><br>

Javascript

$("#fee").on('input', function() {
$('#currency').prop('disabled', (this.value === '0' || this.value === ''));  
})
.trigger('input');

JSFiddle

我现在尝试实现的是字段 currency如果有人输入 00 也会被禁用或 0.00,0目前情况并非如此。我必须同时测试 .和一个 ,在我的领域,因为用户可以输入带有两个值的数字作为分隔符。

我通过改变this.value === '0'this.value < '0.000000001' || this.value < '0,000000001' , 但它仍然不适用于 00 .还有类似 0,1 的东西将被禁用(它不应该被禁用),这是因为逗号 ,哪个在数字中不起作用?

我的问题是否有简单(或困难)的解决方案?

编辑以澄清:字段currency当用户输入 0 时应该被禁用, 00 (或任意数量的零),0.0 (或任何更多的零)和 0,0 (或任何更多的零)。如果用户输入类似 09 的内容,则应启用该字段或 0,50.1 .

最佳答案

我建议您在比较之前对输入值进行一些处理。

  1. 用点替换逗号(如果有的话)
  2. 转换为 float

现在,有两种可能性,您有一个有效的 float 或一个 NAN(不是一个数字)。使用 isNaN() 很容易确定第二种情况。它返回一个 bool 值。

$("#fee").on('input', function() {

  // Replace all coma by dot and parse as a float number
  var value = parseFloat(this.value.replace(",","."));

  $('#currency').prop('disabled', ( value === 0 || isNaN(value) ));  
})
.trigger('input');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Fee: <input id="fee"><br>
Currency: <input id="currency"><br>

关于javascript - 00、0.0 和 0,0 的 jQuery 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51581639/

相关文章:

javascript - jQuery 无法在外部 javascript 文件中工作

javascript - .height() 函数在设置为自动时显示错误值

javascript - 在 Chrome 中使用 window.open 打开本地 HTML 文件

javascript - 是否可以从 javascript 访问 EWS 托管 API

javascript - 将 lodash 用于 MobX 存储

javascript - U2F - 类型错误 |无法注册 key

javascript - jquery replace 不替换所有空格 -

javascript - Meteor session 试图触发模板渲染

javascript - 无法访问 Jquery JCrop api

javascript - 显示 CSV/JSON 文件中的特定数据