2011-08-10 151 views
0
model.qty = (parseInt($('#amendOrderQty').val()) == NaN) ? 
    0 : 
    parseInt($('#amendOrderQty').val()); 

// model.qty === NaN when #amendOrderQty is left blank 

我试图在字段留空时设置为0。为什么这不起作用?为什么这会返回NaN?

回答

1


鉴于此,您应该

isNan(parseInt($('#amendOrderQty').val())) 


你的代码重构和固定的,应该是这个样子更换

parseInt($('#amendOrderQty').val()) == NaN 

使用“isFin ite“来代替。

var x = parseInt($('#amendOrderQty').val(); 
model.qty = isFinite(x) ? x : 0; 
+0

考虑到MDN标记'isNaN()'可能是一个好主意(对于非数字字符串):) +1 – Phil

3

您不能使用比较运算符NaN,它会总是返回false

使用isNaN()代替

var qty = parseInt($('#amendOrderQty').val()); 
model.qty = isNaN(qty) ? 0 : qty; 
1

你不能直接比较的东西NaN因为

NaN === NaN 

始终返回false。

var orderQtyVal = parseInt($('#amendOrderQty').val()); 
model.qty = isNaN(orderQtyVal) ? 0 : orderQtyVal;