jQuery parseInt()导致NaN

时间:2014-02-18 17:29:55

标签: javascript jquery

问题摘要

我一直在根据输入框的value在字段中添加各种数字。我目前遇到的问题是jQuery连接value参数,因为它们是字符串,我无法将它们成功转换为整数。

进一步说明

以下是我使用的HTML示例:

<form action="" method="post">
 <input type="text" id="one" value="20.00" />
 <input type="text" id="two" value="10.00" />
 <a href="#" id="add">
  Add up fields
 </a>
 <input type="submit" value="Submit" />
</form>

这是我的jQuery(上面描述的这种行为是用这个脚本预期的):

$(function(){
  var one = $('#one').val(),
      two = $('#two').val();

  $('#add').click(function(e){
    e.preventDefault;
    var three = one + two;
    alert(three);
  });
});

这显然导致了输出:

20.0010.00

所以我尝试用parseInt()修改我的第一个变量声明,如下所示:

var one = parseInt($('#one').val(),10),
    two = parseInt($('#two').val(),10);

现在刚刚结果:

NaN

所以我尝试先获取值,然后然后转换为整数

var one = $('#one').val(),
    two = $('#two').val(),
    i_one = parseInt(one),
    i_two = parseInt(two);

但是agan ...... NaN就是这样的结果。

我也使用parseFloat()尝试了上述操作,这产生了同样不幸的结果。

我也尝试过(在博客上的某个地方阅读),在前面添加+将强制jQuery将变量视为整数,所以我做了(参见上面我得到的地方one和{{1 }}):

two

我开始认为使用u_one = +one u_two = +two 获取值会阻止jQuery将它们用作除字符串以外的任何东西......但我一定是错的。

您能否告诉我如何以整数格式获取这些值,以便获得结果:

30.00

添加字段后?

在保留val()并且不添加其他隐藏<input />或类似内容的同时,我可以运行<span />

感谢阅读。

它已经曝光,问题与jQuery无关,与我正在使用的模板有关。上述代码的工作方式如下面的评论中所述。我接受了一个作为答案,但所有发布的jQuery示例都可以。

5 个答案:

答案 0 :(得分:3)

试试这种方式

$(function(){
    var one = $('#one').val();
    var two = $('#two').val();

    $('#add').click(function(e){
    e.preventDefault;
    var three = parseInt(one) + parseInt(two);
    alert(three);
    });
});

参考jsfiddle上的工作演示:http://jsfiddle.net/adeshpandey/Y3xmW/

答案 1 :(得分:1)

使用:var three = parseFloat(one + two);

See Demo

答案 2 :(得分:0)

你完全看错了问题!

您在点击发生之前提取值;该点的值为空字符串。

答案 3 :(得分:0)

另一种方式

 $(function(){
  var one = $('#one').val();
  var two = $('#two').val();

  $('#add').click(function(e){
   e.preventDefault;
   var three = parseInt(one) + parseInt(two);
   $('#three').text("Total: " +three);
  });  
});

HTML

 <form action="" method="post">
  <input type="text" id="one" value="20.00" />
    <input type="text" id="two" value="10.00" />
    <a href="#" id="add">
     Add up fields
     </a>
    <p id="three"></p>
   <input type="submit" value="Submit" />
 </form>

答案 4 :(得分:-2)

尝试将输入标记更改为类型编号:

<input type="number" id="one" value="20.00" />