我有一个输入框 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
时应该被禁用, 00
(或任意数量的零),0.0
(或任何更多的零)和 0,0
(或任何更多的零)。如果用户输入类似 09
的内容,则应启用该字段或 0,5
或 0.1
.
最佳答案
我建议您在比较之前对输入值进行一些处理。
- 用点替换逗号(如果有的话)
- 转换为 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/