我正在尝试验证价格字段。我正在尝试这个:

var productId = document.getElementById("productId");
var productName = document.getElementById("productName");
var productPrice = document.getElementById("price");

alert(isFinite(productPrice.value));

if(isNaN(productPrice.value)||!isFinite(productPrice.value)){
    error = document.getElementById("priceError");
    error.innerHTML = "Please enter correct value";
    productPrice.style.border="thin solid red";
}else{
    error = document.getElementById("priceError");
    error.innerHTML = "";
}


当输入仅是空格/多个空格时,行警报提示我为真。
这是我的HTML页面。

<td>Price</td>
<td><input type = "text" id = "price" size = "14"/></td>


谢谢

最佳答案

我不能说为什么会发生这种情况,但是这段代码应该可以解决问题

isFinite(parseFloat(" ")) // false
// because -->
parseFloat(" "); // => result NaN
// tested in Chrome 27+ on Win7


isNaN here的MDN引用中
它说

isNaN(" ");     // false: a string with spaces is converted to 0 which is not NaN


更新:

在isFinite的引用Here中的引用中,它声明isFinite仅在参数为以下情况时返回false:


NaN
正无穷大(Number.POSITIVE_INFINITY
负无穷大(Number.NEGATIVE_INFINITY
在任何其他情况下,它都返回true。 (如Paul S所述)


现在,我认为我得到了所有的失败,并且在那门课程中学到了一些东西。 :)

关于javascript - is有限的空间赋予了真正的值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17511990/

10-08 22:02