从文本框中获取整数值,如何检查它是否为 NaN 或 null 等?

发布于 2024-07-18 05:56:47 字数 148 浏览 5 评论 0原文

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

我该做什么检查? if(NAN = tb.value)

I am pulling a value via JavaScript from a textbox. If the textbox is empty, it returns NaN. I want to return an empty string if it's null, empty, etc.

What check do I do? if(NAN = tb.value)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

淡水深流 2024-07-25 05:56:47

嗯,这里有些可疑。

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

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

哦,要检查某些内容是否为 NaN,您应该使用:

if (isNaN(tb.value))
{
   ...
}

注意:对于任何无法解析为数字的内容,isNaN() 函数返回 true,除了空字符串。 这意味着它可以很好地检查数字输入(比正则表达式容易得多):

if (tb.value != "" && !isNaN(tb.value))
{
   // It's a number
   numValue = parseFloat(tb.value);
}

Hm, something is fishy here.

In what browser does an empty textbox return NaN? I've never seen that happen, and I cannot reproduce it.

The value of a text box is, in fact a string. An empty text box returns an empty string!

Oh, and to check if something is NaN, you should use:

if (isNaN(tb.value))
{
   ...
}

Note: The isNaN()-function returns true for anything that cannot be parsed as a number, except for empty strings. That means it's a good check for numeric input (much easier than regexes):

if (tb.value != "" && !isNaN(tb.value))
{
   // It's a number
   numValue = parseFloat(tb.value);
}
戏剧牡丹亭 2024-07-25 05:56:47

你也可以这样做:

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}

NaN 不等于任何东西,甚至不等于它本身。

如果您不喜欢使用 + 从字符串转换为数字,请使用普通的 parseInt,但请记住始终给出基数

var number = parseInt(input.value, 10)

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

You can also do it this way:

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}

NaN is equal to nothing, not even itself.

if you don't like to use + to convert from String to Number, use the normal parseInt, but remember to always give a base

var number = parseInt(input.value, 10)

otherwise "08" becomes 0 because Javascript thinks it's an octal number.

鸢与 2024-07-25 05:56:47

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

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

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

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

Assuming you have a reference to the input text box:

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

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

  if(isNaN(val)) return "";
  else return val;
}
再见回来 2024-07-25 05:56:47

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

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

var anum=/(^\d+$)/;

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value))
{
    alert("Order Value must be a valid integer");
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus();
    return false;
}

编辑2:我还应该注意我正在使用ASP.NET 这就是为什么我有一种稍微时髦的方式来访问文本框。 在常规 JavaScript 情况下,它可能不会那么混乱。

One thing you could do is a regex check on the value of the textbox and make sure it fits the format of an accepted number, and then if it fits the format perform your process, otherwise return an empty string.

Edit: This is an example from some code I have in front of me (might not be the best regular expression):

var anum=/(^\d+$)/;

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value))
{
    alert("Order Value must be a valid integer");
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus();
    return false;
}

Edit 2: I should also note that I am using ASP.NET which is why I have the slightly funky way of accessing the textbox. In your regular JavaScript case it may not be as cluttered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文