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

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

フィールドを空白のままにすると、値0を設定しようとしています。なぜこれは機能しませんか?なぜNaNが返されますか?

答えて

1

"isFin ite "の代わりに。

+0

おそらく、MDNが「isNaN()」を壊れている(非数値の文字列の場合)とマークしていると考えるとよいでしょう:) +1 – Phil

3

NaNとの比較演算子は使用できません。常に戻り値falseです。

使用isNaN()代わり

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

NaN === NaN 

は常にfalseを返すので、あなたが直接NaNに何かを比較することはできません。これを踏まえて


、あなたがリファクタリングと固定し、

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


あなたのコードで

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

を交換する必要があり、このようなものになります。

var orderQtyVal = parseInt($('#amendOrderQty').val()); 
model.qty = isNaN(orderQtyVal) ? 0 : orderQtyVal; 
関連する問題