问题描述
我尝试将负值与“ 0”进行比较,但这似乎不起作用。
var number = Number.parseInt($(this).val());
var min = Number.parseInt($(this).attr('min'));
var max = Number.parseInt($(this).attr('max'));
这是我的状况:
if (min && $(this).prop('required')) {
if (number < min) {
alert('ok');
fail = true;
}
}
我的最小值是0,我的数字是-1。
它永远不会进入条件。 为什么?
1楼
adiga
5
已采纳
2019-02-25 12:09:35
0
是值。
如果min
为0
,它将永远不会进入if
条件。
以下所有条件将被发送到else块
if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if ("")
if (``)
由于parseInt
的返回值为数字或NaN
,因此可以改用 :
if(!isNaN(min) && $(this).prop('required')) {
// your code
}
2楼
Anurag Srivastava
1
2019-02-25 12:10:41
您的情况:
if(min && $( this ).prop('required'))
将评估为false
,因为分了0和值0 && anything
是false
3楼
jo_va
1
2019-02-25 12:24:48
由于min
为0,因此您的条件评估为false
。
您有两种选择,一种是在分析字符串值之前检查它:
if($(this).attr('min').trim() && $( this ).prop('required')) {
if (number < min) {
alert('ok');
fail = true;
}
}
另一种是在解析数字之后检查NaN
,因为解析一个空字符串将返回NaN
:
if(!isNaN(min) && $( this ).prop('required')) {
if (number < min) {
alert('ok');
fail = true;
}
}
console.log(' '.trim() == false); console.log(!isNaN(Number.parseInt('')) == false);
4楼
yehonatan yehezkel
0
2019-02-25 12:09:46
(0 && true)在JavaScript中返回零。 请参阅第一个评论以获取更多详细信息