我正在通过 JavaScript 从文本框中提取一个值。如果文本框为空,则返回NaN
. 如果它为空、空等,我想返回一个空字符串。
我要做什么检查?if(NAN = tb.value)
?
我正在通过 JavaScript 从文本框中提取一个值。如果文本框为空,则返回NaN
. 如果它为空、空等,我想返回一个空字符串。
我要做什么检查?if(NAN = tb.value)
?
嗯,这里有些不对劲。
在哪个浏览器中,空文本框返回 NaN?我从未见过这种情况发生,我无法重现它。
文本框的值实际上是一个字符串。空文本框返回空字符串!
哦,要检查某些东西是否为 NaN,您应该使用:
if (isNaN(tb.value))
{
...
}
注意:isNaN()
-function 返回true
任何不能被解析为数字的东西,除了空字符串。这意味着它可以很好地检查数字输入(比正则表达式容易得多):
if (tb.value != "" && !isNaN(tb.value))
{
// It's a number
numValue = parseFloat(tb.value);
}
你也可以这样做:
var number = +input.value;
if (input.value === "" || number != number)
{
// not a number
}
NaN 等于无,甚至不等于它自己。
如果您不喜欢使用 + 将 String 转换为 Number,请使用普通的 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;
}
您可以做的一件事是对文本框的值进行正则表达式检查,并确保它符合接受数字的格式,然后如果符合格式则执行您的过程,否则返回一个空字符串。
编辑:这是我面前的一些代码的一个例子(可能不是最好的正则表达式):
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 案例中,它可能不会那么混乱。