(编辑:代码更新)
我遇到错误,当尝试使用JavaScript进行客户端验证时,用户已在HTML表单的 Register 部分正确填写表单。 HTML和JS文件非常简单:
(Fiddle)
JavaScript和HTML:
function validateForm() {
var name = document.getElementById('username').value;
var email = document.getElementById('email').value;
if (name == null || name == "" || checkIfSpaceOnly(name) == false) {
return false;
}
else if (email == null || email == "" || validateEmail(email) == false){
return false;
}
else
return true;
}
//other methods used in validateForm:
function checkIfSpaceOnly(input) {
var re = /\S/;
return re.test(input);
}
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
window.onload = function()
{
var submitBtn = document.getElementById('submit');
submitBtn.addEventListener("click", validateForm);
}
&#13;
<!DOCTYPE html5>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="design.css">
</head>
<div class = "body1">
<div class = "forms" id="forms">
<h2>Log in</h2>
<form name='loginform' action='login.php' method='POST'>
<input type='email' name='email' placeholder="Email" ><br>
<input type='password' name='password' placeholder="Password" ><br><br>
<input type='submit' value='Log in'><br><br>
</form>
<hr>
<br><h2>Register</h2>
<form onsubmit="" name="register" action="register.php" method="POST" onsubmit="return validateForm()">
<input type="text" name="username" class="form-control" placeholder="Username" id="username"><br>
<input type="email" name="email" class="form-control" placeholder="Email" id="email"/><br>
<input type="password" name="password" class="form-control" placeholder="Passwoord"><br>
<br>
<input type="submit" name="submit" id="submit" value="Create user">
</form>
</div>
</div>
<script type="text/javascript" src="javascript.js"></script>
</html>
&#13;
问题是,它就像HTML文件根本没有使用JS文件。表单很乐意注册任何用户,无论他们是否满足JavaScript文件 if 条件。
我检查了控制台,它说(当用户注册时),&#34; ReferenceError:validateForm未定义&#34; 。
除了检查文件目录是否正确之外,我已经搜索并阅读了一般HTML JS表单验证错误,20-something&#34;类似问题&#34;在这里,以及那个特定的ReferenceError。我已经改变了价值观,名称,移动了代码部分....但我似乎无法找到问题并且不知道该怎么做,尽管感觉就像它的感觉一样只是代码中某处的一个简单错误。
答案 0 :(得分:1)
你有3个问题
onload
中,这意味着无法通过HTML标记访问您的validateForm
方法onsubmit
个属性 - 第二个包含它应包含的内容但由于第一个属性而被忽略当您修复这3个问题时,它会按预期工作,如果出现任何问题,则不会提交表单(即false
返回validateForm
)
答案 1 :(得分:0)
请检查if条件,你犯了错误。
错误的代码
if (uName == "") || checkIfSpaceOnly(uName) == false) {
return false;
}
正确的代码
if (uName == "" || checkIfSpaceOnly(uName) == false) {
return false;
}