我不知道我做错了什么... ...当我不输入任何东西并提交时,似乎无法让这个表格显示警报... ...
<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>
如果你想检查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>
好吧,你的逻辑是错误的,正如 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一直在逃逸。