jQuery测试00、0.0和0,0

时间:2018-07-29 15:05:08

标签: 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

我现在试图实现的是,如果有人输入currency000.0,则0,0字段也被禁用,而当前情况并非如此。我必须在字段中同时测试.,,因为用户可以输入带有两个值的数字作为分隔符。

我将this.value === '0'更改为this.value < '0.000000001' || this.value < '0,000000001',但随后它仍然无法与00一起使用。同样会禁用0,1之类的功能(不应该这样做),这是因为逗号,不能在数字中起作用吗?

也许有一个简单(或困难)的解决方案可以解决我的问题?

编辑进行澄清:当用户输入currency0(或任意多个零),{{1 }}(或更多零)和00(或更多零)。如果用户输入0.00,009之类的字段,则应启用该字段。

2 个答案:

答案 0 :(得分:3)

我建议您先比较输入值,然后再进行比较。

  1. 用点代替昏迷(如果有)
  2. 转换为浮点数

因此,现在有两种可能,您有一个有效的浮点数或一个NAN(不是A数)。使用isNaN()返回第二个布尔值很容易确定第二种情况。

$("#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>

答案 1 :(得分:1)

您可以使用this.value.replace(/ [0 +。,] + /,'')== 0

 $("#fee").on('input', function() {
   $('#currency').prop('disabled', (this.value.replace(/[0\+\.,]+/,'') == 0));  
  }).trigger('input');