在提交表格时通过JS进行数字验证

问题描述 投票:0回答:1

我不知道我做错了什么... ...当我不输入任何东西并提交时,似乎无法让这个表格显示警报... ...

        <script>
                    function validate() {
                        var n1 = document.forms["GoToPage"]["page"].value;
                        if ( isNaN(n1) ) {
                            return true;
                        } else {
                            alert("Must be a Number!");
                            return false;
                        }
                    }
        </script>
<form name="GoToPage" method="GET">
<input type="number" min="1" max="1000" name="page" size="4" />
<input type="submit" value="Go" onclick="return validate();" />
</form>
javascript validation onclick onsubmit
1个回答
0
投票

如果你想检查n1是否是一个数字,使用

if ( !(isNaN(n1)) ) {
    return true;
 } 

如果n1是一个数字,它将返回true。

如果你没有发送任何东西,isNaN将返回false。

console.log(!(isNaN(''))); //if you use the code above
console.log(isNaN(''));

如果你没有发送任何东西,就用它来返回false。

if ( !(isNaN(n1)) && n1!='' ) {
    return true;
} 

它将是这样的

<script>
  function validate() {
      var n1 = document.forms["GoToPage"]["page"].value;
      if ( !(isNaN(n1)) && n1!='' ) {
          alert("It's a Number!");
          return true;
      } else {
          alert("It's not a Number!");
          return false;
      }
  }
</script>
<form name="GoToPage" method="GET">
<input type="number" min="1" max="1000" name="page" size="4" />
<input type="submit" value="Go" onclick="return validate();" />
</form>

0
投票

好吧,你的逻辑是错误的,正如 RobG.

function validate() {
  var n1 = document.forms["GoToPage"]["page"].value;
  if (n1.length>0) {
    return true;
  } else {
    alert("Must be a Number!");
    return false;
  }
}
<form name="GoToPage" method="GET" onsubmit="return validate();">
  <input type="number" min="1" max="1000" name="page" size="4" />
  <input type="submit" value="Go" />
</form>

我检查了代码,它的工作与预期的一样。我想由于输入类型是数字,js会把它当作数字。所以,我认为NaN一直在逃逸。

© www.soinside.com 2019 - 2024. All rights reserved.