我现在正在学习有关表单验证的教程,我希望获得有关为什么此函数始终返回 if
条件的帮助。
<html>
<head>
</head>
<body>
<form id="form" action="#" method="post">
<fieldset>
<p>
First Name:
<input type="text" id="txt" />
</p>
<p> <input type="submit" value="submit" onclick="validate()" /> </p>
</fieldset>
</form>
<script type="text/javascript">
function validate()
{
var userName = document.getElementById("txt").value;
if (userName.length == 0)
{
alert("FINISH THAT UP");
return false;
}
else
{
alert("thanks, " + UserName);
}
}
</script>
</body>
最佳答案
当文本框不为空时,它确实到达了 else
部分,但随后它因错误而崩溃,因此表单正在静默提交。
JavaScript 区分大小写 - UserName
与 userName
不同,因此未定义。
更改为:
alert("thanks, " + userName);
为了避免此类问题,您可以使用 try..catch
包装整个 block ,如下所示:
function validate()
{
try
{
var userName = document.getElementById("txt").value;
if (userName.length == 0)
{
alert("FINISH THAT UP");
return false;
}
else
{
alert("thanks, " + UserName);
}
} catch (err) {
alert("general error while validating: " + err.message);
return false;
}
}
完成此操作后,您将看到“用户名未定义”。
此外,附注 - 使用您当前的代码,即使值为空,表单仍将被提交,尽管您返回 false - 这是因为您甚至需要取消提交:
<input type="submit" value="submit" onclick="return validate()" />
您忘记了 onclick
本身中的 return
关键字。
关于javascript if-else循环没有到达else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11280297/