If语句,用于查找数字字段是否为空或小数位数过多,但忽略小数位数是否为零



我有一行代码:

if ($val === "" || ($val.split(".")[1] || "").length > 2)

感谢这里好心人的帮助。但这行代码计算小数点后2位以上的数字,即使这些数字都是零。

问题是,人们可以加2.00,这很好,但不能加2.000,这是相同的数字。因此,我希望再添加一个||语句,允许人们添加多个小数点后零位。

整个代码是这样的:

$(document).ready(function() {
$("#submitCalculation").click(function() {
$(".checkLength").each(function() {
$val = $(this).val();
if ($val === "" || ($val.split(".")[1] || "").length > 2) {    
$(this).popover({
html: true, 
placement: "bottom",  
content: '<textarea class="popover-textarea"></textarea>',
template: '<div class="popover"><div class="arrow"></div>'+
'<div class="row"><div class="col-3 my-auto"><i class="fas fa-exclamation-triangle" id="invalid-input7">'+
'</i></div><div class="popover-content col-9">Enter a value between 2 and 50 m with up to 2 decimal places.'+
'</div></div>' 
});
$(this).popover("show");
$(this).click( function() {
$(this).popover("hide");
});
}
})
})
}) 

它检查输入的数字的有效性,如果字段为空,则弹出窗口告诉他们,脚本停止在那里。如果字段有太多的小数位数,则popver告诉它们,脚本停止在那里。但是,现在的问题在于,人们可以添加多个小数点后零位,脚本不会停止,但弹出窗口仍然会弹出。

期待你在这件事上的帮助,它已经困扰了我一段时间了。

这应该完成任务:

console.log("my answer:","1.2345,0.0103,4.56,2.3400,123.22000,234"
.split(",").map(val=>{
let m=val.match(/.dd(.*)/);
return val+': '+!!(m&&m[1]>0) 
}) );
// the following is Barmar's method which gets it wrong in 4 cases:
console.log("Barmar's answer:","1.2345,0.0103,4.56,2.3400,123.22000,234"
.split(",").map(val=>
val+': '+!!(val == "" || val.match(/.d{0,2}[1-9]+/))) );

在您的脚本中,您需要替换

$val = $(this).val(); 
if ($val === "" || ($val.split(".")[1] || "").length > 2) { ...

带有

$val = $(this).val(); 
let m=$val.match(/.dd(.*)/);
if (!!(m&&m[1]>0)) { ...

在检查之前将数字转换为浮点值,因为这将丢弃小数点后的尾随零。然后使用正则表达式检查小数点后的位数是否过多。您也可以使用isNaN来检查它是否不是一个数字。

$(document).ready(function() {
$("#submitCalculation").click(function() {
$(".checkLength").each(function() {
const $val = $(this).val();
let valid = true;
const valFloat = parseFloat($val);
if (isNaN(valFloat)) {
valid = false;
} else if (/.d{3}/.test(valFloat.toString())) {
valid = false;
}
if (!valid) {
console.log("Invalid input");
} else {
console.log("Valid input");
}
})
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="checkLength">
<button id="submitCalculation">Check</button>

相关内容

  • 没有找到相关文章

最新更新