JavaScript验证文件不起作用:" ReferenceError:validateForm未定义" (html链接)

时间:2016-06-07 12:56:14

标签: javascript html validation referenceerror

(编辑:代码更新)

我遇到错误,当尝试使用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;
&#13;
&#13;

问题是,它就像HTML文件根本没有使用JS文件。表单很乐意注册任何用户,无论他们是否满足JavaScript文件 if 条件。

我检查了控制台,它说(当用户注册时),&#34; ReferenceError:validateForm未定义&#34;

除了检查文件目录是否正确之外,我已经搜索并阅读了一般HTML JS表单验证错误,20-something&#34;类似问题&#34;在这里,以及那个特定的ReferenceError。我已经改变了价值观,名称,移动了代码部分....但我似乎无法找到问题并且不知道该怎么做,尽管感觉就像它的感觉一样只是代码中某处的一个简单错误。

2 个答案:

答案 0 :(得分:1)

你有3个问题

  1. 你的小提琴设置不正确;所有代码都包含在onload中,这意味着无法通过HTML标记访问您的validateForm方法
  2. 表单中有2个onsubmit个属性 - 第二个包含它应包含的内容但由于第一个属性而被忽略
  3. 您可以在标记和代码中分配事件处理程序。选择一个,坚持下去。
  4. 当您修复这3个问题时,它会按预期工作,如果出现任何问题,则不会提交表单(即false返回validateForm

    https://jsfiddle.net/spwx1rfd/7/

答案 1 :(得分:0)

请检查if条件,你犯了错误。

错误的代码

if (uName == "") || checkIfSpaceOnly(uName) == false) {
    return false;
}

正确的代码

if (uName == "" || checkIfSpaceOnly(uName) == false) {
    return false;
}