从文本框中获取整数值,如何检查它是否为 NaN 或 null 等?
我正在通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
嗯,这里有些可疑。
在什么浏览器中空文本框返回 NaN? 我从未见过这种情况发生,也无法重现。
文本框的值实际上是一个字符串。 空文本框返回空字符串!
哦,要检查某些内容是否为 NaN,您应该使用:
注意:对于任何无法解析为数字的内容,
isNaN()
函数返回true
,除了空字符串。 这意味着它可以很好地检查数字输入(比正则表达式容易得多):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:
Note: The
isNaN()
-function returnstrue
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):你也可以这样做:
NaN 不等于任何东西,甚至不等于它本身。
如果您不喜欢使用 + 从字符串转换为数字,请使用普通的 parseInt,但请记住始终给出基数
,否则“08”将变为 0,因为 Javascript 认为它是八进制数。
You can also do it this way:
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
otherwise "08" becomes 0 because Javascript thinks it's an octal number.
假设您有对输入文本框的引用:
Assuming you have a reference to the input text box:
您可以做的一件事是对文本框的值进行正则表达式检查,并确保它符合接受的数字的格式,然后如果它符合格式则执行您的过程,否则返回一个空字符串。
编辑:这是我面前的一些代码的示例(可能不是最好的正则表达式):
编辑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):
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.