2011-12-08 12 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

アレックスが正しいです、送信ボタンがフォームを送信しています。フォーム上でonSubmitイベントを使用する必要があります。妥当性検査が失敗した場合はfalseを返します。これにより、送信がキャンセルされます。また、ユーザーがenterキーを押してフォームを送信すると、関数がバイパスされるため、onclickを使用することはお勧めできません。

<form id="submitform" name="form1" method="post" action="stacademic.php" onSubmit="checkSyntax()"> 
関連する問題