Javascript 从文本框中获取整数值,如何检查它是否';是NaN还是null等?

Javascript 从文本框中获取整数值,如何检查它是否';是NaN还是null等?,javascript,numbers,nan,Javascript,Numbers,Nan,我通过JavaScript从文本框中提取一个值。如果文本框为空,则返回NaN。我想返回一个空字符串,如果它为null、空等 我该怎么办if(NAN=tb.value)?您可以做的一件事是对文本框的值进行正则表达式检查,确保其符合接受的数字格式,然后如果符合格式,则执行流程,否则返回空字符串 编辑:这是我面前的一些代码的示例(可能不是最好的正则表达式): var anum=/(^\d+$)/; if(!anum.test(document.getElementById(“”.value)) { 警

我通过JavaScript从文本框中提取一个值。如果文本框为空,则返回
NaN
。我想返回一个空字符串,如果它为null、空等


我该怎么办
if(NAN=tb.value)

您可以做的一件事是对文本框的值进行正则表达式检查,确保其符合接受的数字格式,然后如果符合格式,则执行流程,否则返回空字符串

编辑:这是我面前的一些代码的示例(可能不是最好的正则表达式):

var anum=/(^\d+$)/;
if(!anum.test(document.getElementById(“”.value))
{
警报(“订单值必须是有效整数”);
document.getElementById(“”.focus();
返回false;
}

编辑2:我还应该注意,我使用的是ASP.NET,这就是为什么我访问文本框的方式有点古怪的原因。在您的常规JavaScript案例中,它可能没有那么杂乱。

Hm,这里有些可疑

在哪个浏览器中,空文本框返回NaN?我从未见过这种情况发生,也无法重现

文本框的值实际上是一个字符串。空文本框返回空字符串

哦,要检查某个东西是否为NaN,您应该使用:

if (isNaN(tb.value))
{
   ...
}
注意:
isNaN()
-函数返回
true
任何不能解析为数字的内容,空字符串除外。这意味着它可以很好地检查数字输入(比正则表达式容易得多):


您也可以这样做:

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}
NaN等于零,甚至连它自己也不等于零

如果您不喜欢使用+将字符串转换为数字,请使用普通的parseInt,但请记住始终提供一个基数

var number = parseInt(input.value, 10)

否则,“08”变为0,因为Javascript认为它是一个八进制数。

假设您有一个对输入文本框的引用:

function getInteger(input) {
  if(!input || !input.value) return "";

  var val = parseInt(input.value, 10);

  if(isNaN(val)) return "";
  else return val;
}

对于这个答案,这实际上稍微修改了一下。如果您检查修订历史记录,您将看到原始代码是检查十进制值。我不得不修改它来为ints工作:PBe更具体请:这个文本框是什么(文本输入,文本区域,选择列表还是什么)?据我所知,没有“textbox”值(空或非空)会自行返回NaN。textbox是否返回NaN,或者您是否先将其解析为float/integer(这意味着parseFloat/Int)返回NaN。您的意思是:如果(NaN==tb.value)/(用于比较的两个等于)可能重复
var number = parseInt(input.value, 10)
function getInteger(input) {
  if(!input || !input.value) return "";

  var val = parseInt(input.value, 10);

  if(isNaN(val)) return "";
  else return val;
}