0

可能重复:
JavaScript 中是否有(内置)方法来检查字符串是否为有效数字?

我在 HTML 中有一个输入搜索栏

<form class="form-inline" action="javascript:displayResult()">          
    <input id="searchKey" >
    <button onclick="result()" type="button" class="btn btn-warning btn ">
          Go
    </button>                   
</form>

这是Javascript函数

function result() {     
    search($('#searchKey').val());    

    if(typeof(searchKey)=="number") { // checking if this is a number
       someFunction();
    }
};

问题是,对于搜索栏中的每个条目,我都将值作为字符串获取,即使它在搜索栏中是“hello”或 9789。我曾经alert(typeof(searchKey));验证过,它总是将类型返回为字符串

我试图在搜索栏中区分数字和字符串,我确信有更好的方法可以做到这一点,但我不确定为什么这不起作用

我不能使用 parseInt() 因为我需要动态区分文本和数字

4

3 回答 3

5

a 的值<input type="text">始终是一个字符串。但是,您可以使用 将其解析为数字parseInt。它将导致NaN如果不能从字符串中解析出数字。不要忘记你必须使用isNaN它,因为myNumber === NaN它不是一个有效的操作。

更好的是,使用isNaN(+searchKey),因为一元操作数将调用ToNumber。但是,这将忽略空格。

9.3.1 ToNumber 应用于字符串类型

应用于字符串的 ToNumber 将以下语法应用于输入字符串。如果语法不能将 String 解释为 StringNumericLiteral 的扩展,则 ToNumber 的结果为 NaN。

[有关实际规则,请参见http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf ]


11.4.6 一元+运算符

一元 + 运算符将其操作数转换为 Number 类型。产生式 UnaryExpression : + UnaryExpression 的评估如下:

  1. 令 expr 为计算 UnaryExpression 的结果。
  2. 返回 ToNumber(GetValue(expr))。
于 2012-08-04T08:26:59.910 回答
3

文本输入字段始终包含一个string值。尝试if (!isNaN(searchKey))测试数值。或者,您可以使用正则表达式:/^\d+$/.test(searchKey)

于 2012-08-04T08:27:41.533 回答
3

利用

if(!isNaN(searchKey))

代替

if(typeof(searchKey)=="number")
于 2012-08-04T08:27:41.517 回答