2011-12-08 35 views
0

我有一個簡單的表單,我使用JavaScript驗證輸入的數據。我不明白爲什麼document.getElementById(「submitform」)。submit()不起作用。以下是我的代碼。感謝您的幫助。formObject.submit()不起作用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript"> 

function checkSyntax(){ 

jsid=document.getElementById("sid").value; 
jname=document.getElementById("name").value; 
jemail=document.getElementById("email").value; 
jgpa=document.getElementById("gpa").value; 

var noError=true; 
var Regsig=/^[2][0-9]{8}$/; 
var Regn=/^[a-zA-Z]{2,25}$/; 
var Rege=/^[a-zA-Z]+[_]?[a-zA-Z]*[@][a-zA-Z]+[.](net|com|edu.sa)$/; 
var Regg=/^[1-4]+[.][0-9]+/; 

if(!Regsig.test(jsid)){ 
    alert("The student ID must be all numbers and of length 9"); 
    noError=false; 
} 
if(!Regn.test(jname)){ 
    alert("Name must be alphabets of min length 3 and max 25"); 
      noError=false; 

} 
if(!Rege.test(jemail)){ 
    alert("Wrong email format"); 
      noError=false; 

} 
if(!Regg.test(jgpa)){ 
    alert("Wrong GPA format"); 
      noError=false; 

} 
if(noError){ 
    **document.getElementById("submitform").submit();** 
} 
} 
function checkRetrieve(Sid2,Name2){ 
var Regsig=/(|[2][0-9]{8})/; 
var Regn=/(|[a-zA-Z]{2,25})/; 
var error=true; 

if(!Regsig.test(sid.value)){ 
    alert("The student ID must be all numbers and of length 9"); 
    error=false; 
} 
if(!Regn.test(name.value)){ 
    alert("Name must be alphabets of min length 3 and max 25"); 
    error=false; 
} 
if(Sid2.value!="" && Name2.value!=""){ 
    alert("you can only use on of the two fields for your query"); 
    Sid2.value=""; 
    Name2.value=""; 
    error=false; 

} 



} 
</script> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 
<h1>Web-Based Application for Student Academic Records</h1> 
<p> Add a new student</p> 
<body> 

<form id="submitform" name="form1" method="post" action="stacademic.php"> 
Student ID:<input type="text" size="26" maxlength="9" name="SID"id="sid"/><br /><br /> 
Name:<input type="text" size="30" maxlength="50" name="NAME" id="name"/><br /><br /> 
Email:<input type="text" size="30" maxlength="50" name="EMAIL" id="email"/><br /><br /> 
Major: <select id="major" name="MAJOR"> 
<option>Computer Engineering<option/> 
<option>Computer Science<option/> 
<option>Electrical Engineering<option/> 
<option>Mechanical Engineering<option/> 
<option>Software Engineering<option/> 
</select><br /> 
<br /> 
GPA:<input type="text" size="30" maxlength="5" name="GPA" id="gpa"/><br /><br /> 
<input type="submit" value="submit" onclick="checkSyntax()" name="submit"/><br /> 
</form><br /> 


<p> Retrieve student GPA either Student ID or Student Name: </p> 
<form id="retrieveform" onSubmit="return checkRetrieve(this.sid2,this.name2);"  method="post" action="stacademic.php"> 
Student ID:<input type="text" size="26" maxlength="9" name="SID2" id="sid2"/><br /><br /> 
Name:<input type="text" size="30" maxlength="50" name="NAME2" id="name2"/><br /><br /> 
<input type="submit" value="Retrieve Results" name="submit2"/><br /> 

</form> 

</body> 
</html> 

回答

0

當您單擊該按鈕時,表單已被提交。

你應該做的是將checkSyntax分配給onsubmit事件,如果一切正確,則返回true,如果發生錯誤則返回false。如果onsubmit事件中的函數返回false,則表單不會被提交。

0

Alex是對的,您的提交按鈕正在提交表單。您應該在表單上使用onSubmit事件,如果驗證失敗,請將其返回false,這將取消提交。另外,使用onclick並不是一個好主意,因爲如果用戶通過按回車來提交表單,函數將被繞過。

<form id="submitform" name="form1" method="post" action="stacademic.php" onSubmit="checkSyntax()">