我有一个输入字段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');
我现在试图实现的是,如果有人输入currency
或00
或0.0
,则0,0
字段也被禁用,而当前情况并非如此。我必须在字段中同时测试.
和,
,因为用户可以输入带有两个值的数字作为分隔符。
我将this.value === '0'
更改为this.value < '0.000000001' || this.value < '0,000000001'
,但随后它仍然无法与00
一起使用。同样会禁用0,1
之类的功能(不应该这样做),这是因为逗号,
不能在数字中起作用吗?
也许有一个简单(或困难)的解决方案可以解决我的问题?
编辑进行澄清:当用户输入currency
,0
(或任意多个零),{{1 }}(或更多零)和00
(或更多零)。如果用户输入0.0
或0,0
或09
之类的字段,则应启用该字段。
答案 0 :(得分:3)
我建议您先比较输入值,然后再进行比较。
因此,现在有两种可能,您有一个有效的浮点数或一个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');