【问题标题】:numerical value of number input by user in a text field用户在文本字段中输入的数字的数值
【发布时间】:2012-03-06 00:11:39
【问题描述】:

我需要将用户输入的两个数字相加。为此,我创建了两个输入字段,使用 .val() 在两个单独的变量中从中检索值,然后添加它们。问题是添加了字符串而不是数字。例如。 2 + 3 变成 23 而不是 5。请建议做什么,除了在输入框中使用 type = number。

【问题讨论】:

标签: javascript html


【解决方案1】:

你可以使用 parseInt(...)

例子:

var num = parseInt("2", 10) + parseInt("3", 10);
// num == 5

【讨论】:

  • 如果用户输入2.5会怎样?即使您假设只允许使用整数,也请不要建议 parseInt() 不使用第二个参数来指定基数为 10 的 parseInt("2",10),否则如果用户输入前导零(例如,“077”),它可能(取决于浏览器)被视为八进制;如果用户输入前导“0x”,它将被视为十六进制。
【解决方案2】:

使用parseInt将字符串转换为数字:

var a = '2';
var b = '3';
var sum = parseInt(a,10) + parseInt(b,10);
console.log(sum); /* 5 */

请记住,parseInt(str, rad) 仅在 str 实际包含多个碱基 rad 时才有效,因此如果您想允许其他碱基,则需要手动检查它们。另请注意,如果您需要多个整数,则需要使用 parseFloat

【讨论】:

  • 如果a'2.5' 怎么办?如果 a 是 '0x77''077' 而您没有指定基数怎么办?
  • @nnnnnn:修复它,这是我最早的答案之一,当时我不知道parseInt 的问题。
【解决方案3】:

在添加前使用 parseInt (http://www.w3schools.com/jsref/jsref_parseint.asp) 或 parseFloat (http://www.w3schools.com/jsref/jsref_parsefloat.asp) 转换为数值.

PS:这是简单的答案。您可能想做一些验证/剥离/修剪等。

【讨论】:

    【解决方案4】:

    Number() 是你想要的函数 "123a" 返回 NAN

    parseInt() 截断尾随字母“123a”返回 123

    <input type="text" id="txtFld" onblur="if(!Number(this.value)){alert('not a number');}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2021-01-28
      • 2015-02-27
      • 1970-01-01
      • 2018-11-15
      • 2021-01-17
      • 1970-01-01
      相关资源
      最近更新 更多