将数字验证为正数

时间:2016-04-11 18:49:23

标签: javascript

我已经将一个数字验证为正数,但它没有给出正确的答案,即它也接受负数。我哪里出错了?

<script type="javascript">
    function validatenumber(){
        var class1=document.getElementById("class");
        if((parseInt)class1.value<0){
            alert("Please enter positive integer");
            return false;
        }
    }
</script>

<form name="addbook" action="addbook.php" method="get" onsubmit="validatenumber();">
     Code:<br/><input type="text" name="code"><br/>
     Class:<br/><input type="number" name="class"><br/>
     title:<br/><input type="text" name="title"><br/>
     price:<br/><input type="number" name="price"><br/>
     quantity:<br/><input type="number" name="quantity"><br/>
     category:<br/><input type="text" name="category"><br/>
     <input type="submit" value="submit"><br/>
 </form>

1 个答案:

答案 0 :(得分:3)

这个:

(parseInt)class1.value<0

应该是:

parseInt(class1.value, 10) < 0

10将迫使它被评估为基数10并且不允许JavaScript进行猜测&#34;至于它认为它是哪个基地。在以前版本的ECMAScript中,有一个带有&#34; 0&#34;的字符串。在开始时会欺骗parseInt认为该数字应该被解释为八进制。

ParseInt Documentation

您还尝试按ID获取元素,并且您已按名称指定。

Class:<br/><input type="number" name="class"><br/>

您可以为元素指定ID,也可以使用

var class1=document.getElementsByName("class")[0];

而不是:

var class1=document.getElementById("class");

和 你有type="javascript",它应该是language="javascript"

https://jsfiddle.net/wvapgjs6/1/