将文本字段转换为数值(获取NaN)

时间:2013-07-19 13:52:27

标签: javascript jquery forms

我有这段代码,它应该从一个字段中获取值,并根据某个百分比(在这种情况下为60%)计算它的值。

我创建了一个隐藏字段来存储html中的值,但是当我运行计算并在Firebug中检查它时,它获得了一个NaN值。谁能告诉我我能做些什么来产生我需要的号码呢?

 (Apply_RequestedAmtX_r != 0 & Apply_RequestedAdvanceAmtY_r !=0){
    var AmtX= ($('#Apply_RequestedAdvanceAmtX_r').val());
    var AmtY= ($("#Apply_AmtYAfterSplit_r").val());
    var MaxAMT = parseInt((AmtY*60)/100);
        $('#mna').val(MaxAMT

1 个答案:

答案 0 :(得分:1)

val返回一个字符串。现在,您使用这些变量的方式,它们将自动转换为数字(尽管最好自己解析它们)。

您的一个或多个值中包含一个字符,可防止该值自动转换为数字;然后,因为那是NaN,任何涉及它的数学都将是NaN。如果您在使用之前检查Firebug中的AmtXAmyY,您应该看到该字符是什么。

同样,解析不是这里的实际问题,但你在错误的地方使用parseInt(除非你试图用它来截断数字的小数部分,在这种情况下,是更好的选择)。这是正确的地方:

var AmtX= parseInt($('#Apply_RequestedAdvanceAmtX_r').val(), 10);
var AmtY= parseInt($("#Apply_AmtYAfterSplit_r").val(), 10);
var MaxAMT = (AmtY*60)/100;

MaxAMT可能会有一小部分。如果您希望MaxAMT为整数,则:

var MaxAMT = Math.round((AmtY*60)/100);
// or
var MaxAMT = Math.floor(AmtY*60)/100);
// or
var MaxAMT = Math.ceil(AmtY*60)/100);

......取决于您的需求。